java - 创建派生类对象时是否创建父类(super class)对象?

标签 java

如果我有一个C类,它继承B类,并且B类继承A类,那么 如果我创建一个C类的对象,是否会创建父类(super class)的对象?如果是的话怎么办?? 如何访问A类的私有(private)成员??

最佳答案

Does the object of superclass created when object of derived class is created?

没有。

父类(super class)构造函数用于初始化当前对象的父类(super class)定义状态,但这并不等于创建父类(super class)的实例。

If I have a class C which inherits class B and class B inherits class A, then If I create an object of Class C, is the object of superclass created??

没有。见上文。

如果您创建 C 的实例,您将拥有一个最派生类型为 C 的对象。该对象是 B 的实例,但它可能由于 C 中的方法重写和其他原因,其行为与常规 B 不完全相同。

If yes, how??

没有实际意义。

How to access the private members of class A??

您无法从子类直接访问父类(super class)的 private 成员。这就是 private 访问修饰符的含义。如果您需要访问它们,则需要使用它们,您要么需要在父类(super class)中创建非私有(private)方法来执行此操作(例如 getter 和/或 setter),要么更改成员的访问权限。

(另一种方法是使用反射来覆盖 private 访问修饰符,但您只能将其用作最后的手段。最好修复父类(super class)代码以提供所需的访问权限.. .或者弄清楚子类根本不需要访问。)

关于java - 创建派生类对象时是否创建父类(super class)对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383168/

相关文章:

java - Java中对象的初始化

java - 确定地理点是否在州边界的 X 米范围内(使用边界数据的 shapefile)

java - 确定java内存使用情况

java - 仅使用不可变数据类型会使 Java 程序线程安全吗?

java - 将状态模式与虚拟代理一起使用是否有意义?

Java访问调用者变量,可能吗?如何?

java - 对字段的 Lambda 引用

java - sleep 功能不会落后于人工智能的轮次

java - ManyToMany 的 JPA Criteria 规范

java - 如何知道按钮是否被按下或释放?