繁体   English   中英

Java中的私有变量继承

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM