this和super的区别:
this代表本类对类的应用;
super代表父类存储空间的标识(可以理解为父类引用,可以操作父类成员)
class Father{
public int num=10;
}
class Son extends Father{
public int num=20;
public void show(){
int num=30;
System.out.println(num);
System.out.println(this.num); //20
System.out.println(super.num); //10
}
}
public class Demo1 {
public static void main(String[] args) {
Son son=new Son();
son.show();
}
}
打印内容:
使用:
1、调用成员变量
this.成员变量 调用本类的成员变量
super.成员变量 调用父类的成员变量
2、调用构造方法
this(...) 调用本类的构造方法
super(...) 调用父类的构造方法
3、调用成员方法
this.成员方法 调用本类的成员方法
super.成员方法 调用父类的成员方法
继承中构造方法的关系:
A、子类中所有的构造方法默认都会访问父类中空参数的构造方法,
因为子类会继承父类中的数据,一定要完成父类数据的初始化
B、子类每一个构造方法的第一条语句默认都是super();
package com.windy.java;
class Father{
public Father(){
System.out.println("Father的无参构造方法");
}
public Father(String name){
System.out.println("Father的带参构造方法");
}
}
class Son extends Father{
public Son(){
//super();//默认就有
System.out.println("son的无参构造方法");
}
public Son(String name){
//super();//默认就有
System.out.println("son的带参构造方法");
}
}
public class Demo1 {
public static void main(String[] args) {
Son son=new Son();
System.out.println("--------------");
Son son2=new Son("Clare");
}
}
打印: