Java: 继承方法中使用的私有变量

Java: Private variables used in inherited methods

我是 Java 的新手,据我所知,class Shape 中的变量 drawingChar 是私有的,因此它不会被 class Test 继承,但是由于 setDrawingChar() 是一个 public 函数,它是继承的。

public class Shape {

    private char drawingChar = '*'; // private var

    public void setDrawingChar(char drawingChar) {
        this.drawingChar = drawingChar;
    }
} 
public class Test extends Shape{

    public static void main(String[] args) {
        Test t2 = new Test();
    t2.setDrawingChar('*'); // call setDrawingChar on a Test obj
    }
}

在 class Test 中,我可以通过某种方式在 Test 对象上调用 setDrawingChar(),但 Test 不继承 drawingChar 是不是真的?如果是这样,在对象 t2 的情况下,this.drawingChar 指的是什么?

子类将继承任何 publicprotected 变量或方法,并且可以选择保留它们或覆盖它们(在方法的情况下)。这就是您可以调用方法 setDrawingChar 的原因,它会检查 Test 是否存在该名称的任何方法,然后检查其超类的实现。它从 Shape 中找到实现并执行它。

请注意,您将无法使用 Shape 变量 drawingChar,因为 private 范围仅限于其他 Shape 对象而不是它们的子类

有关 publicprivateprotected 的更多信息,请访问 javadocs website for access control