继承:从子类访问基类字段

Sin*_*ian 10 java oop inheritance

子类对象如何引用超类?例如:

public class ParentClass {

    public ParentClass() {}     // No-arg constructor.

    protected String strField;
    private int intField;
    private byte byteField;
} 


public class ChildClass extends ParentClass{

    // It should have the parent fields.
}
Run Code Online (Sandbox Code Playgroud)

ChildClass调用构造函数时,ParentClass会创建一个类型的对象,对吧?

ChildClass继承strField自ParentClass对象,因此它(ChildClass对象)应该以ParentClass某种方式访问对象,但是如何?

ben*_*n75 8

当您ChildClass childClassInstance = new ChildClass()只创建一个新对象时.

您可以看到ChildClass由以下内容定义的对象:

  • 来自ChildClass+字段的字段ParentClass.

因此该字段strField是ChildClass的一部分,可以通过访问childClassInstance.strField

所以你的假设

ChildClass调用构造函数时,ParentClass会创建一个类型的对象

不完全正确.创建的ChildClass实例也是一个ParentClass实例,它是同一个对象.


Bas*_*sen 5

的实例ChildClass没有ParentClass对象,它一个ParentClass对象。作为子类,它可以访问其父类中的公共和受保护的属性/方法。所以在这里ChildClass可以访问strField,但不intFieldbyteField,因为他们是私有的。

您可以在没有任何特定语法的情况下使用它。