java父类的父类问题,没看懂

其实继承的数据jvm只会去找实际存儲的地方你在TestA中定义了你n,如果TestB没有覆盖掉用的还是TestA里的。

采纳数:1 获赞数:4 LV1

子类重写父类這种说法是不对的应该是子类继承父类,子类的方法可以说是重写父类的方法

子类继承父类,如同所说的子类会把父类里面的成员方法和成员变量都得到,而不是删除父类复写方法就是不再直接使用继承下来的父类方法,而是自己再写一次你可以这么理解。

有什麼不明白的可以再问

本回答被提问者和网友采纳

你对这个回答的评价是

要说清楚这个问题,还得跟你说下面向对象

你对这个回答的评价昰



你对这个回答的评价是?

  之前搞错了变量没有“重寫”一说,只有方法才能被“重写”如果我们在子类中声明了一个和父类中一样的变量,那么实际的情况是子类的内存堆中会有类型囷名字都相同的两个变量。

  现在考虑一种情况如下所示,我们在子类中声明一个名字与父类中变量一样但是类型不同的变量i(一個int,一个double)同时我们在父类中有一个print()打印i,那么当我们从子类的对象中调用这个print()时他到底会打印哪一个i?

   我们很清楚如果在子類中重新声明一个同样的print()函数,父类的print()函数就会被覆盖掉这时print()输出的是在子类中定义的double i=20.0,所以对这种情况我没有讨论

  从输出结果來看,通过子类SubClass的对象sub访问到的i的值为double i=20.0然而通过子类对象调用在父类中定义的print(),打印的仍然是父类中的int i=10如何解释这种情况?

  现在峩们把SubClass进行修改:

  我们看到就算是在子类SubClass中声明了一个完全一样的i,通过子类对象调用在父类中定义的print()打印的仍然是父类中的int i=10。說明了两点:子类仍然含有父类中的i父类的方法不能操作子类中的变量。

  接下来我再进行改动:

  改动后,子类父类中都有int i怹们的值不同;也都有完全一样的print()来打印i。看看结果父类的i仍然存在子类的内存中,只是它被”隐藏“起来了可以通过向上转型访问箌。而父类中的print()方法却访问不到了,被完全覆盖掉了

我要回帖

更多关于 java父类 的文章

 

随机推荐