this:代表当前对象的引用,谁来调用我,我就代表谁super:代表当前对象父类的引用
this即可调用本类的,也可调用父类的,不过要在本类没有的情况下才能调用
调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
调用构造方法
this(...) 调用本类的构造方法
super(...) 调用父类的构造方法
c:调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类的成员方法
super.成员方法 调用父类的成员方法
系统会默认给空参构造 ,也会默认给super();语句,
子类中所有的构造方法默认都会访问父类中的空参构造方法。
因为子类会继承父类的数据,可能还会使用父类的数据,
所以子类初始化之前一定要先完成父类数据化的初始化,
其实每一个构造方法的第一条语句默认都是:super() object类是最顶层的父类 。
this和super只能存在一个,super(...)或者this(...)必须出现在构造方法的第一条语句上。
1 class Demo_extends { 2 public static void main(String[] args) { 3 Son s1 = new Son(); 4 System.out.println("姓名:" + s1.getName() + ",年龄:" + s1.getAge()); 5 System.out.println("---------------"); 6 Son s2 = new Son("张三",23); 7 System.out.println(s2.getName() + "..." + s2.getAge()); 8 } 9 } 10 11 class Father { 12 private String name; //姓名 13 private int age; //年龄 14 15 public Father() { //空参构造 16 System.out.println("这是一个空参构造"); 17 } 18 public Father(String name,int age ) { //有参构造 19 this.name = name; 20 this.age = age; 21 System.out.println("这是一个有参构造"); 22 } 23 24 public void setName (String name) { //设置姓名 25 this.name = name; 26 } 27 public String getName () { //获取姓名 28 return name; 29 } 30 31 public void setage (int age) { //设置年龄 32 this.age = age; 33 } 34 public int getAge () { //获取年龄 35 return age; 36 } 37 } 38 39 class Son extends Father{ 40 public Son() { //空参构造 41 this("王五",26); //本类中的构造方法 42 //super(); //调用父类中的构造方法 43 System.out.println("这是一个空参构造"); 44 } 45 public Son(String name,int age) { //有参构造 46 super(name,age); 47 System.out.println("这是一个有参构造"); 48 } 49 50 }
原文:https://www.cnblogs.com/Sherwin-liao/p/10922409.html