/*父类和子类之间的关系*/ /* 对于子类父类相同变量与相同方法的问题 相同方法:由于多态及运行时类型的知识知,与其运行时类型有关 相同变量:由编译时类型决定,可以从内存角度考虑,对于Child需要保存两个类型的str, 一个是Father的,一个是Child的。下面(1)句处由子类向父类隐式转型,会发生 内存截断,仅保留了Child继承的Father的public部分,则输出的即是Father的str */ class Father { String str = "Father"; public Father() { this.str = "Father1"; this.setstr(); } public void setstr()//注意次数要为public,否则不会跳到Child的set函数中 { str = "Father2"; } } public class Child extends Father { String str; public Child() { } public void setstr() { str = "Child2";//调用Father构造函数时,由于多态,会跳到此函数中,但修改的仍是Child的str值,Father的str未发生改变 } public static void main(String[] args) { Father a1 = new Child();//(1) System.out.println(a1.str); //输出“Father1” System.out.println(((Child)a1).str);//输出“Child2” } }
原文:http://blog.csdn.net/woliuyunyicai/article/details/44657529