码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础(十六)Super关键字

时间:2019-08-05 12:17:59      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:子类   父类   初始   ora   lin   vat   必须   成员方法   turn   

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 时必须放在构造函数第一行

 

 

JAVA基础(十六)Super关键字

标签:子类   父类   初始   ora   lin   vat   必须   成员方法   turn   

原文地址:https://www.cnblogs.com/layuechuquwan/p/11302229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!