[英]private variable inheritance in java
看下面的代码:
class Rodent {
private String hello = "hello" ;
public void printHello() {
System.out.println(hello);
}
}
public class Mouse extends Rodent {
public static void main(String[] args) {
Mouse mouse = new Mouse();
mouse.printHello();
}
}
如果看到,则方法printHello()被继承。 此方法在内部使用私有变量。 但是此私有变量不是继承的。 那么这段代码如何工作?
是否类似于JavaScript中的闭包?
如果方法printHello()
是继承的,它需要一些私有变量,那么这也给中可用Mouse
就像现在我打电话printHello()
的Mouse
?
编辑 :对于那些说将调用父类方法的人,我发现只有对象创建了,没有为子类和父类分离一个对象。 这里
请参见:
子类的实例包含其超类私有字段。 因此,从某种意义上说, private String hello
是继承的。
但是作为私有字段,在Rodent
之外无法访问。 但是您的代码也无法在Rodent
之外访问它。
mouse.printHello()
调用Rodent
类而不是Mouse
类中的printHello
方法,因此可以访问私有变量hello
。 如您所说,它是继承的。
这样想:(尽管术语不正确)
Rodent
类具有方法printHello
和私有变量hello
。 但该方法是公开的,它是可见的Mouse
(但仍是啮齿动物类)。
但是,如果将方法添加到Mouse
并尝试访问变量hello
,则将导致编译错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.