加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JAVA基础(十六)Super关键字

发布时间:2020-12-15 05:27:40 所属栏目:Java 来源:网络整理
导读:Super关键字: Super关键字的特点: ????? This? 与super 不能同时存在第一行; ??????? 构造方法第一行都有一个默认语句 super()无参构造; ??????? 私有化后显示定义无法在用默认, ???????? 空参时先调父类构造在子类构造,因为默认语句 super() ????

Super关键字:

Super关键字的特点:

????? This? 与super 不能同时存在第一行;

??????? 构造方法第一行都有一个默认语句 super()无参构造;

??????? 私有化后显示定义无法在用默认,

???????? 空参时先调父类构造在子类构造,因为默认语句 super()

???????? 第一行只要this在就没有super.

super的调用:

???????? super:代表当前对象父类的引用

???????? super.成员变量 调用父类的成员变量

???????? super(…) 调用父类的构造方法

??????? super.成员方法 调用父类的成员方法

//定义Person类,将Student和Worker共性抽取出来
class Person {
    private String name;
    private int age;
    public Person(String name,int age) {
        // super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
//Student extends Person
class Student extends Person { // Student类的构造方法 Student(String name,int age) { // 使用super关键字调用父类构造方法,进行相应的初始化动作 super(name,age); } public void study() {// Studnet中特有的方法 System.out.println(this.getName() + "同学在学习"); } }
//Worker extends Person
class Worker extends Person { Worker(String name,int age) { // 使用super关键字调用父类构造方法,进行相应的初始化动作 super(name,age); } public void work() {// Worker 中特有的方法 System.out.println(this.getName() + "工人在工作"); } }
//测试
public class Test { public static void main(String[] args) { Student stu = new Student("小明",23); stu.study(); Worker w = new Worker("小李",45); w.work(); }

This()是调用自己其他的构造函数,Super()是调用自己继承的父类的构造函数“,

如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,总是会忽略这一点。

?? 那门这两个关键字能不能同时出现在子类的一个构造函数当中吗?答案肯定是不能

? 原因:This? 与super 不能同时存在第一行;JAVA 中规定使用 this 和 super 时必须放在构造函数第一行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读