这是面试问题。
子类继承private吗 字段?
我的回答是“不”,因为我们不能使用“正常的面向对象的方式”访问它们。但是采访者认为它们是继承的,因为我们可以间接或使用反射访问这些字段,并且它们仍然存在于对象中。
回来后,我在javadoc中找到了以下引用:
超类中的私人成员 一个 子类不继承私有 父类的成员。
你知道面试官观点的论据吗?
这是面试问题。
子类继承private吗 字段?
我的回答是“不”,因为我们不能使用“正常的面向对象的方式”访问它们。但是采访者认为它们是继承的,因为我们可以间接或使用反射访问这些字段,并且它们仍然存在于对象中。
回来后,我在javadoc中找到了以下引用:
超类中的私人成员 一个 子类不继承私有 父类的成员。
你知道面试官观点的论据吗?
当前回答
我相信,答案完全取决于所提出的问题。我的意思是,如果问题是
我们可以直接访问超类的私有字段吗 他们的子类?
那么答案是否定的,如果我们查看访问说明符的细节,就会提到,私有成员只能在类本身内访问。
但是,如果问题是
我们可以访问超类的私有字段吗 他们的子类?
这意味着,访问私有成员的操作并不重要。在这种情况下,我们可以在超类中创建public方法,你可以访问private成员。因此,在本例中,您创建了一个接口/桥接器来访问私有成员。
其他oop语言,如c++,有友元函数的概念,通过它我们可以访问其他类的私有成员。
其他回答
子类不继承父类的私有成员。但是,如果父类具有用于访问其私有字段的公共或受保护方法,则子类也可以使用这些方法
参考: https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html: ~:文本=私人% 20成员在% 20 % % 20 20超类,由% % 20使用% 20 20 % 20子类。
不,私有字段不被继承。唯一的原因是子类不能直接访问它们。
我相信,答案完全取决于所提出的问题。我的意思是,如果问题是
我们可以直接访问超类的私有字段吗 他们的子类?
那么答案是否定的,如果我们查看访问说明符的细节,就会提到,私有成员只能在类本身内访问。
但是,如果问题是
我们可以访问超类的私有字段吗 他们的子类?
这意味着,访问私有成员的操作并不重要。在这种情况下,我们可以在超类中创建public方法,你可以访问private成员。因此,在本例中,您创建了一个接口/桥接器来访问私有成员。
其他oop语言,如c++,有友元函数的概念,通过它我们可以访问其他类的私有成员。
这取决于你对“继承”的定义。子类在内存中仍然有字段吗?肯定。它能直接访问它们吗?不。这只是定义的微妙之处;关键是要理解到底发生了什么。
私有类成员或构造函数只能在顶层类的主体(§7.6)中访问,该主体包含了成员或构造函数的声明。它不是由子类继承的。https://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.6