class Man{
String character = new String("男性本质特征");
public void showCharacter(){
System.out.println("男性表现特征");
}
}
class Woman extends Man{
String character = new String("女性本质特征");
public void showCharacter(){
System.out.println("女性表现特征");
}
}
public class Renyao{
public static void main(String[] args){
Man people = new Woman();
System.out.println(people.character);
people.showCharacter();
}
}
结果为什么是:
男性本质特征
女性表现特征
String character = new String("男性本质特征");
public void showCharacter(){
System.out.println("男性表现特征");
}
}
class Woman extends Man{
String character = new String("女性本质特征");
public void showCharacter(){
System.out.println("女性表现特征");
}
}
public class Renyao{
public static void main(String[] args){
Man people = new Woman();
System.out.println(people.character);
people.showCharacter();
}
}
结果为什么是:
男性本质特征
女性表现特征
方法是后绑定的(除了static和final),而变量不是
但实力化类型为超类的MAN,则是超类MAN中的变量以及方法,当MAN中方法已经被WOMAN覆盖,所以结果为
变量为超类的变量
方法为子类的方法
WOMAN继承了MAN,MAN man = new WOMAN()的意思是
MAN的对象引用了子类WOMAN的实例,这就是上溯造型.
当父类的对象引用了子类的实例后,JAVA规定,如果成员变量
出现隐藏,那么引用的就是父类的变量,如果成员方法出现重构,
那么引用的就是子类的方法.以上意见仅供参考.
之后如果调用子父类都有的方法 那么实际上是调用子类的方法 毕竟子类的方法比父类的要新
这是java的规范阿
但是people毕竟是 man类型的所以他的属性还是man的
当然这是最浅显的应用了