父类空间优先于子类对象产生
在每次创建子类对象时,先初始化父类空间没在创建子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。
super和this的含义
目录
super:代表父类的存储空间标识(可以理解为父类的引用)。
this:代表当前对象的引用(谁调用谁救代表谁)。
super的用法
代码演示
public class Fu {
int num=10;
public void method(){
System.out.println("父类方法");
}
}
/*
super关键字的用法有三种:
1.在子类的成员方法中,访问父类的成员变量。
2.在子类的成员方法中,访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法
*/
public class Zi extends Fu {
int num = 20;
public Zi() {
super();//3.
}
public void methodZi() {
System.out.println(super.num);//1.父类中的num
}
public void method() {
super.method();//2.访问父类中的method
System.out.println("子类方法");
}
}
this的用法
public class Fu {
int num=30;
}
/*
super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问本类的另一个成员方法。
3.在本类的构造方法中,访问奔雷的另一个构造方法
在第三种用法当中要注意
A。this()调用也必须是构造方法的第一个语句,唯一一个。
B。super和this两种构造调用,不能同时使用
*/
public class Zi extends Fu {
int num=20;
public Zi(){
this(123);//本类的无参构造,调用本类的有参构造
}
public Zi(int n){
}
public Zi(int n,int m){
}
public void showNum(){
int num=10;
System.out.println(num);//局部变量,10
System.out.println(this.num);//1.本类中的成员变量,20
System.out.println(super.num);//父类中的成员变量,330
}
public void methodA(){
System.out.println("AAA");
}
public void methodB(){
this.methodA();//2.在本类的成员方法中,访问本类的另一个成员方法,AAA
System.out.println("BBB");
}
}