public class Entry {
public static void main(String[] args) {
SmallHomeTest small = new SmallHomeTest();
small.printHome();//........①
}
}
你①处代码调用的
public void printHome() {
System.out.println(home);
}
用public修饰,这和
public String getHome() {
return home;
}
没区别。
我自己来回答这个问题吧,今天研究了下,可能是我对继承的理解不太对。
这里子类SmallHomeTest,虽然继承了父类的HomeTest的printHome()方法,其实仅表示,子类可以以父类的身份去调用父类的printHome()方法,而不是指子类有这个方法。
所以说,当编译执行时候,编译器发现子类里的small.printHome()语句时,会先检查子类有没有printHome方法,如果没有,再看其父类有没有,如果有,则是以父类的身份,来调用这个printHome()方法,则里面的home变量是来自父类的private home变量(父类是看不到子类定义的的private home变量的)。
成员变量是私有的,只能够在类的内部被使用。成员方法是公有的,可以被外部调用。类的基本特性。
多态性并不能体现在字段上。
就近原则。printHome()方法是父类的方法,printHome()里成员变量的使用优先访问父类的成员变量。