super
super
关键字的用法和this关键字的使用方法相似
1.this
:代表本类对象的引用
2.super
:代表父类存储空间的标识(可以理解为父类对象引用)
package cn.tedu;
public class Fu {
public int age=40;
}
package cn.tedu;
public class Zi extends Fu{
public int age=20;
public void show(){
int age=30;
//age=30
System.out.println(age);
//访问本类的成员变量age=20
System.out.println(this.age);
//访问父类的成员变量age=40
System.out.println(super.age);
}
}
package cn.tedu;
public class Demo {
public static void main(String[] args) {
//创建对象,调用方法
Zi z=new Zi();
z.show();
}
}
this关键字指向调用该方法的对象,一般我们是在当前类中使用this关键字,所以我们常说this代表苯类对象的引用
1.继承中构造方法的访问特点
子类中所有的构造方法默认都会访问父类中无参的构造方法
为什么呢?
●因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化
●每一个子类构造方法的第一条语句默认都是: super()
如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?
●通过使用super关键字 去显示的调用父类的带参构造方法
●在父类中自己提供一个无参构造方法
推荐:自己给出无参构造方法
package cn.tedu;
public class Fu {
public Fu(){
System.out.println("Fu中无参构造方法被调用");
}
public Fu(int age){
System.out.println("Fu中带参构造方法被调用");
}
}
package cn.tedu;
public class Zi extends Fu{
public Zi(){
super();
System.out.println("Zi中无参构造方法被调用");
}
public Zi(int age){
super();
System.out.println("Zi中带参构造方法被调用");
}
}
package cn.tedu;
public class Demo {
public static void main(String[] args) {
//创建对象,调用方法
Zi z=new Zi();
Zi z2=new Zi(20);
}
}
2.继承中构造方法的访问特点
通过子类对象访问一一个方法
●子类成员范围找
●父类成员范围找
●如果都没有就报错(不考虑父亲的父亲…)
package cn.tedu;
public class Fu {
public void show(){
System.out.println("Fu中show()方法被调用");
}
}
package cn.tedu;
public class Zi extends Fu{
public void method(){
System.out.println("Zi中method()方法被调用");
}
public void show(){
super.show();
System.out.println("Zi中show()方法被调用");
}
}
package cn.tedu;
public class Demo {
public static void main(String[] args) {
//创建对象,调用方法
Zi z=new Zi();
z.method();
z.show();
}
}