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 指的是什么?
子类将继承任何 public
或 protected
变量或方法,并且可以选择保留它们或覆盖它们(在方法的情况下)。这就是您可以调用方法 setDrawingChar
的原因,它会检查 Test
是否存在该名称的任何方法,然后检查其超类的实现。它从 Shape
中找到实现并执行它。
请注意,您将无法使用 Shape
变量 drawingChar
,因为 private
范围仅限于其他 Shape
对象而不是它们的子类
有关 public
、private
和 protected
的更多信息,请访问 javadocs website for access control。
我是 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 指的是什么?
子类将继承任何 public
或 protected
变量或方法,并且可以选择保留它们或覆盖它们(在方法的情况下)。这就是您可以调用方法 setDrawingChar
的原因,它会检查 Test
是否存在该名称的任何方法,然后检查其超类的实现。它从 Shape
中找到实现并执行它。
请注意,您将无法使用 Shape
变量 drawingChar
,因为 private
范围仅限于其他 Shape
对象而不是它们的子类
有关 public
、private
和 protected
的更多信息,请访问 javadocs website for access control。