3 回答

TA贡献1862条经验 获得超7个赞
这是一个java中成员变量的scope问题。
1.父类中非私有变量可以被子类直接继承和访问。需要用super.filed;
2.父类中的私有变量可以可以通过set和get方法,向外提供访问接口。
3.成员变量只能被继承,不能被重写。不构成多态。只有方法才有多态行。
4.父类和子类中的成员变量命名相同是可以的。在代码中表面上看到,
该类有两个相同的变量,父类中有一个,子类中有一个。实际上,在内存中他们
具有不同存储标识。不同的地址,是不同的对象实例。
总结:一个类的变量属于该类所有。非私有的变量可以被子类继承。子类访问父类
的变量需要通过父类的访问接口。变量不存在多态。

TA贡献1827条经验 获得超9个赞
虽然子类重写了父类的属性和方法
但是父类引用不可以调用子类特有的方法和属性
但是可以调用从父类继承的方法
成员方法的调用按照对象的类型,无论用什么类型(父类还是本身),其调用的都是具体对象所在类中定义的方法
所以p.name还是父类的属性,而p.get()是子类的方法

TA贡献1848条经验 获得超2个赞
上面说的有点深奥啊 哈哈
我就你的问题和你说下
你定义了parent类作为父类
你有定义了child类作为子类
以上就是继承关系,很正确
至于你说的,“为什么是‘ Parent Child’ ,而不是 ‘Parent Parent’????”
这个大多java开发人员经常犯的小毛病,大多人都会认为
“子类会覆盖父类的属性,并且初始化子类后,通过父类调用该属性和子类调用该属性的值应该相同。”
其实内在的是这样的:
"基类与子类中声明了一个相同名称的属性,基类和子类都可以分别管理自己的属性,且属性值不会被覆盖,即使基类与子类中声明了一个相同名称的静态变量,静态变量的值也不会覆盖。"
Thinking in Java 经典话语
哈哈
添加回答
举报