JAVA中的继承问题
为什么34行是b.i输出是456,而同样调用g(b)中有b.i,输出的却是123?还有到底什么叫做变量不能被重写?看了半天也理解不了....
为什么34行是b.i输出是456,而同样调用g(b)中有b.i,输出的却是123?还有到底什么叫做变量不能被重写?看了半天也理解不了.
展开
展开全部
B继承了A类,并且又定义了一个变量i,这个变量i隐藏了父类A类的变量i,此时B类的每一个对象b中都有两个属性i:A.i=123以及B.i=456。对于一个B类引用b,使用b.i访问时,访问的是B.i属性,也就是456。
而方法g(A a)的形参是A类引用,将一个B类对象传递到方法g中,在方法g中只能访问这个B类对象的A类部分,因此此时a.i代表的是这个B类对象中的A.i属性,也就是123。
而方法g(A a)的形参是A类引用,将一个B类对象传递到方法g中,在方法g中只能访问这个B类对象的A类部分,因此此时a.i代表的是这个B类对象中的A.i属性,也就是123。
追问
嗯嗯嗯,懂了,讲得很清楚
要是您能私信我您的QQ号就好了,我还有些问题想问
谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询