我对Java很新,根据我的知识,类Shape中的变量drawingChar是私有的,所以它不是由类Test继承的,但是因为setDrawingChar()是一个公共函数,所以它是继承的。 / p>
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
}
}
在类Test中,不知何故我可以在Test对象上调用setDrawingChar(),但是Test不会继承drawingChar吗?如果是这样,那么 this.drawingChar 在对象t2中的含义是什么?
答案 0 :(得分:3)
子类将继承任何public
或protected
变量或方法,并且可以选择将它们单独保留或覆盖它们(在方法的情况下)。这就是为什么你可以调用方法setDrawingChar
,它通过该名称检查Test
任何方法,然后检查其超类的实现。它从Shape
找到实现并执行它。
请注意,您将无法使用Shape
变量drawingChar
,因为private
范围仅限于其他Shape
对象,而不是其子类
public
上的private
,protected
和std::vector
的更多信息。