说明1
父类有某个属性,子类没有该属性,父子类的成员方法都可以访问该属性
class Wangjianlin{
double money=1000;
public void showMoney(){
return money;
}
}
class Wangsicong extends Wangjianlin{
public void showMoney(){
return money;
}
}
测试:
Wangjianlin wang=new Wangsicong();
System.out.println(wang.showMoney());
执行结果:
1000
说明2
子类有某个属性,父类没有该属性,通过父类引用 不能访问 该子类的属性,即:不能向下查找
理解: 父母不知道我们的小金库
父类 对象名 = new 子类();
对象名.变量;
例子:
class Wangjianlin{
double money=1000;
}
class Wangsicong extends Wangjianlin{
int gfNum=5;
}
测试:
Wangjianlin wang=new Wangsicong();
System.out.println(wang.money);//访问父类的成员变量
//由于Wangjianlin没有 gfNum 成员变量,所以编译报错
//System.out.println(wang.gfNum);
执行结果:
1000
说明3
父子类有 同名属性,通过父类的引用,访问的是父类的属性
例子:
class Wangjianlin{
double money=1000;
}
class Wangsicong extends Wangjianlin{
double money=500;
}
测试:
Wangjianlin wang=new Wangsicong();
System.out.println(wang.money;
执行结果:
1000
说明4
父子类有 同名属性,通过 父类的成员方法 访问 属性,访问的是 父类的属性
例子:
class Wangjianlin{
double money=1000;
public void showMoney(){
return money;
}
}
class Wangsicong extends Wangjianlin{
double money=500;
}
测试:
Wangjianlin wang=new Wangsicong();
System.out.println(wang.showMoney());
执行结果:
1000
说明4-1
子类 重写 父类的成员方法,那么 优先 访问 子类的属性
例子:
class Wangjianlin{
double money=1000;
public void showMoney(){
return money;
}
}
class Wangsicong extends Wangjianlin{
double money=500;
public void showMoney(){
return money;
}
}
测试:
Wangjianlin wang=new Wangsicong();
System.out.println(wang.showMoney());
执行结果:
500