-------------------------------------------------------------父类:packagecom.fzq.study3;publicclassBase{publicinti=0;publicvoidshowMe(){System.out.println(i);System.out....
-------------------------------------------------------------
父类:
package com.fzq.study3;
public class Base {
public int i = 0;
public void showMe(){
System.out.println(i);
System.out.println("Base");
}
public Base() {}
}
-----------------------------------------------------------------
子类:
package com.fzq.study3;
public class SubClass extends Base{
public int i = 1;
public void showMe(){
System.out.println(i);
System.out.println("SubClass");
}
public SubClass() {}
}
---------------------------------------------------------------
test类:
package com.fzq.study3;
public class Test {
public static void main(String[] args) {
Base b = new SubClass();
b.showMe();
System.out.println(b.i);
System.out.println("+++++++++++++++++++");
SubClass sb = (SubClass)b;
sb.showMe();
System.out.println(sb.i);
System.out.println("+++++++++++++++++++");
}
}
------------------------------------------------------------------
test 输出:
1
SubClass
0
+++++++++++++++++++
1
SubClass
1
+++++++++++++++++++
------------------------------------------------------------------
问题:
在test类中的main()方法中,b.showMe();和System.out.println(b.i);为什么方法调用的是子类对象的,而变量i调用的是父类对象的。
还有一点要补充:①为什么b.showMe()中用到的i是子类对象的?
②要想彻底弄明白这些问题有没有什么好书,或者资料可以推荐的,想看些更底层的东西,要不然只能是知其然,不知其所以然。
展开