4. 子类将继承父类所有的属性和方法吗?为什么?在什么情况下会出现子类对父类变量的隐藏?什么情况下出现
6个回答
展开全部
上面说的对都是根本没有透彻理解继承。还什么不存在,在这误导楼主。
当程序创建一个子类对象的时候,系统不仅会为该类中定义的的实例变量分配内存,也会为其父类中定义的所有实例变量分配内存,即使子类定义了与父类中同名的实例变量。也就说,new一个java对象的时候,如果该java对象有多个父类(一个直接父类和对个间接父类),那么这个java对象会保存它自身的实例变量加上它所有的父类中的实例变量。
如果在子类中定义了与父类中已有同名的变量,那么子类中定义的变量就会,注意!!!!!!!
就会隐藏父类中定义的变量。注意!!!!不是完全的覆盖。所以,系统为子类创建对象时,依然会为父类中定义的、被隐藏的的变量分配内存空间。
因为子类中定义与父类中同名的实例变量并不会完全覆盖父类中定义的实例变量,它只是简单的隐藏了父类中的实例变量。
可以代码验证!!!自己写一个父类,里面就有一个public 修饰的String类型变量赋值为"父亲"。再写一个子类,继承该父类。里面声明一个private 修饰的String类型 和父类变量同名的变量,并赋值"子类"。然后new子类的对象,用new出的子类对象去点在同名的变量名输出的结果是"子类"。但是你将子类对象向上强转父类类型,然后你再点那个同名的变量名看看能不能编译通过?答案是可以的,而且输出的就是父类的属性"父类".这在java中是允许的。
当程序创建一个子类对象的时候,系统不仅会为该类中定义的的实例变量分配内存,也会为其父类中定义的所有实例变量分配内存,即使子类定义了与父类中同名的实例变量。也就说,new一个java对象的时候,如果该java对象有多个父类(一个直接父类和对个间接父类),那么这个java对象会保存它自身的实例变量加上它所有的父类中的实例变量。
如果在子类中定义了与父类中已有同名的变量,那么子类中定义的变量就会,注意!!!!!!!
就会隐藏父类中定义的变量。注意!!!!不是完全的覆盖。所以,系统为子类创建对象时,依然会为父类中定义的、被隐藏的的变量分配内存空间。
因为子类中定义与父类中同名的实例变量并不会完全覆盖父类中定义的实例变量,它只是简单的隐藏了父类中的实例变量。
可以代码验证!!!自己写一个父类,里面就有一个public 修饰的String类型变量赋值为"父亲"。再写一个子类,继承该父类。里面声明一个private 修饰的String类型 和父类变量同名的变量,并赋值"子类"。然后new子类的对象,用new出的子类对象去点在同名的变量名输出的结果是"子类"。但是你将子类对象向上强转父类类型,然后你再点那个同名的变量名看看能不能编译通过?答案是可以的,而且输出的就是父类的属性"父类".这在java中是允许的。
展开全部
子类只能继承父类的公开的或受保护的方法和属性。(构造方法是继承不了的)
在java中没有变量隐藏这一说法,如果一定要说有,那么我想你可能是想问: java中有方法的重写,那么是否有变量的重写?
如果是这个问题,重写不存在变量的重写,只有方法的重写。
望采纳
回复 371239928:
如果有疑问,看看我对另外的一个朋友的回复。
有的东西你说在多,他也不明白,需要的是自己去做。 你说那么多,我估计LZ都已经晕啦。
我给你个参考答案吧。 我回答的。
在java中没有变量隐藏这一说法,如果一定要说有,那么我想你可能是想问: java中有方法的重写,那么是否有变量的重写?
如果是这个问题,重写不存在变量的重写,只有方法的重写。
望采纳
回复 371239928:
如果有疑问,看看我对另外的一个朋友的回复。
有的东西你说在多,他也不明白,需要的是自己去做。 你说那么多,我估计LZ都已经晕啦。
我给你个参考答案吧。 我回答的。
参考资料: http://zhidao.baidu.com/question/395192248.html?oldq=1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
父类中私有的权限是子类无法继承的! 就是private修饰符修饰的!
子类对父类变量的隐藏我还是第一次听说~!!
子类对父类变量的隐藏我还是第一次听说~!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子类只能继承父类的公开的或受保护的方法和属性。(构造方法是继承不了的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当父类的方法,用封装器封装时,并用修饰符,私有private修饰时,只能有父类接口,进行访问,且不能被子类继承
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询