如果我有 C类 ,其继承 B类且 B类继承 A类,然后 如果我创建 C类 的对象,是否创建了超类的对象?如果有,怎么样? 如何访问 A类的私人成员
答案 0 :(得分:1)
创建派生类的对象时是否创建了超类的对象?
没有
超类构造函数用于初始化currebt对象的超类定义状态,但这并不等于创建超类的实例。
如果我有一个C类继承B类而B类继承A类,那么如果我创建一个C类对象,是否创建了超类的对象?
没有。见上文。
如果你创建了一个C实例,你将拥有一个最大派生类型为C的对象。这个对象也是instanceof
B,但它可能不完全正常因为C和其他方法中的方法覆盖,就像常规B一样。
如果是,怎么样?
摸拟。
如何访问A类私人成员?
您无法直接从子类访问超类的private
成员。这就是private
访问修饰符的含义。如果您需要访问它们,您需要使用它们,您需要在超类中创建非私有方法来执行此操作(例如getter和/或setter),或更改成员的访问权限。
(另一种方法是使用反射来覆盖private
访问修饰符,但是你应该只使用它作为最后的手段。最好修复超类代码以提供所需的访问权限......或者数字离开,子类根本不需要访问。)
答案 1 :(得分:0)
答案 2 :(得分:0)
你无法访问课堂外的私人变量。
访问它们,
的 1。你可以将它们公之于众或受到保护,但这不是一个好主意。
的 2。你可以为它编写getter方法,这也不是私有方法,这是很好的方法。
第3。您可以使用反射来访问它。
提供更多信息以帮助您更好地
答案 3 :(得分:0)
这取决于您使用的语言。如果您正在使用C ++,您可以使子类成为超类的朋友,然后您可以访问其公共成员。如果你使用Java,你可以使用反射来定位超级对象并反思它,但它会比它的价值更麻烦。