(5)继承与成员变量之间的关系:
A.当子类中的成员变量与父类中的成员变量名字一样的时候:
查找:(就近原则)
a.先在方法的局部范围内进行查找,如果找到就返回;
b.如果在方法局部范围找不到,去本类中成员位置上查找,如果找到就返回 ;
c.如果在中成员位置上找不到,去父类中成员位置上查找,如果找到就返回;
d.如果在父类中成员位置上找不到,报错。
B.当子类中的成员变量与父类中的成员变量名字不一样的时候,使用什么变量名,就访问谁。
(6)super关键字
通过super关键字可以去访问父类中的数据。
A. this关键字与super关键字的使用区别?
a.this代表的是调用该类的当前对象
b.super代表的是父类存储空间的标识(父类的引用,可以操作父类的成员)
B.如何使用关键字this和super
a.访问成员变量
this.成员变量 访问的是本类中的成员变量
super.成员变量 访问的是父类中的成员变量
b.访问构造方法
this(...) super(...)
c.访问成员方法
this.成员方法() super.成员方法()
eg:
class Father1{
int num = 10;
public void show(){
System.out.println("这是父类中的show方法");
}
}
class Son1 extends Father1{
int num = 20;
public void show(){
int num = 30;
System.out.println(num);
System.out.println(this.num); // 访问的是本类中的成员变量
//如何访问到父类中的同名成员变量呢?
System.out.println(super.num);// 访问的是父类中的成员变量
super.show();
show1();
this.show1();
}
public void show1(){
System.out.println("这是Son1类中的show2方法");
}
}
public class SuperThisTest {
public static void main(String[] args) {
Son1 son = new Son1();
son.show();
}
}
/*
运行结果:
30
20
10
这是父类中的show方法
这是Son1类中的show2方法
这是Son1类中的show2方法
*/