Java 面向对象 之 super 关键字

简介:

http://www.verejava.com/?id=17159596599630

/**

    this: 代表当前类的引用
        1. 当局部变量和成员变量同名时,  成员变量要加 this 限定
        2. 实例化时 可以用 this 调用当前类的构造方法,   必须写在第一行
        3. 可以用 this  调用当前类的 普通方法

    super : 代表当前父类的引用
        1. 实例化子类时,  可以用  super 调用父类的 非私有方法
        2. 实例化子类时.    可以用 super 调用父类的  构造方法 ,  必须写在第一行
        3. 在子类的方法中 , 可以用 supe 调用父类的 非私有方法.
*/
public class Test1 {

    public static void main(String[] args) {
        // 实例化 农夫

        Father father = new Father();
        father.setName("农夫");
        father.setAge(90);
        System.out.println(father.getAge() + " 岁 " + father.getName() + " 有 " + father.getWealth());

        Father father = new Father("农夫", 90);
        System.out.println(father.getAge() + " 岁 " + father.getName() + " 有 " + father.getWealth());

        Son son = new Son("农夫", 90);
        System.out.println("儿子知道父亲的 : " + son.getAge() + " 岁 " + son.getName() + " 有 " + son.getWealth());
        son.work();
    }
}

//父类
class Father {
    
    private String name;
    private int age;
    private String wealth;

    public Father() {
        wealth = "100两黄金";
    }

    public Father(String name, int age) {
        this();
        this.name = name;
        //this.age=age;
        this.setAge(90);
    }

    public void work() {
        System.out.println("耕地");
    }

    public String getWealth() {
        return wealth;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

//子类
class Son extends Father {
    public Son(String name, int age) {
        super(name, age);
        //super.setName(name);
        //super.setAge(age);
    }

    public void work() {
        super.work();
        System.out.println("儿子 寻找黄金宝藏");
        System.out.println("只有通过自己的勤奋劳动, 才能得到果实 是最大的宝藏");
    }
}

http://www.verejava.com/?id=17159596599630

目录
相关文章
|
2天前
|
Java 开发者
【Java编程新纪元】JDK 22:超级构造函数来袭,super(...) 前导语句改写编程规则!
【9月更文挑战第6天】JDK 22的超级构造函数特性是Java编程语言发展史上的一个重要里程碑。它不仅简化了代码编写,还提升了代码的可读性和维护性。我们有理由相信,在未来的Java版本中,还将有更多令人兴奋的新特性等待我们去发现和应用。让我们共同期待Java编程新纪元的到来!
|
19天前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
16天前
|
Java 开发者 C++
|
18天前
|
存储 Java
Java面向对象面试题总结(上)
在Java中,重写(Override)与重载(Overload)是两个重要的概念,关联到方法的定义与调用。重写是指子类对继承自父类的方法进行新的实现,以便提供子类特有的行为,其关键在于方法签名一致但方法体不同。重载则允许在同一个类中定义多个同名方法,只要参数列表不同即可,以此提供方法调用的灵活性。重写关注多态性,而重载强调编译时多态。
16 1
|
8天前
|
存储 Java 数据库连接
Java编程之旅:从基础到高级,探索面向对象的力量
【8月更文挑战第31天】本文是一篇深入浅出的Java编程指南,旨在通过生动的例子和实际代码演示,带领读者从Java的基础语法起步,逐步深入到面向对象的核心概念,最后探讨如何在实际项目中应用这些知识。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
|
18天前
|
Java 数据安全/隐私保护
【Java 第五篇章】面向对象
封装隐藏对象内部细节,仅暴露出必要的接口,提升代码的安全性和可维护性。通过private修饰属性并提供公有的getter和setter方法实现。权限修饰符从private到public控制着访问范围,从类内到整个项目。封装可用于类及其内部结构。
13 0
|
18天前
|
Java
【Java基础面试四十六】、 List<? super T>和List<? extends T>有什么区别?
这篇文章阐述了Java泛型中的List<? super T>和List<? extends T>的区别,解释了通配符的使用规则,以及Java泛型设计原则确保了编译时无警告则运行时无ClassCastException异常。
|
4月前
|
Java
【JAVA学习之路 | 基础篇】super关键字
【JAVA学习之路 | 基础篇】super关键字
|
4月前
|
Java
Java中的super关键字
Java中的super关键字
41 0
|
10月前
|
Java
java super和this关键字
super关键字的用法有三种: 1.在子类的成员方法中,访问父类的成员变量。 2.在子类的成员方法中,访问父类的成员方法。 3.在子类的构造方法中,访问父类的构造方法。 super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种 1.在本类的成员方法中,访问本类的成员变量。 2.在本类的成员方法中,访问本类的另一个成员方法。 3.在本类的构造方法中,访问本类的另一个构造方法。 在第三种用法当中要注意: A.this(...)调用也必须是构造方法的第一个语句,唯一一个。 B.super和this两种构造调用,不能同时使用。
31 0