/*父类和子类之间的关系*/
/*
对于子类父类相同变量与相同方法的问题
相同方法:由于多态及运行时类型的知识知,与其运行时类型有关
相同变量:由编译时类型决定,可以从内存角度考虑,对于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”
}
}
继承中父类子类有相同的变量与方法情况
最新推荐文章于 2022-12-12 19:50:10 发布