繁体   English   中英

在Java中访问私有方法

[英]Accessing private method in Java

在java中,私有访问修饰符具有高度限制性,只能在定义它们的类中访问。

考虑这个例子。

    package x;
    public class Boom {

    protected String name;

    public Boom() {

    }

    private void aConfidentialInfo(){
        System.out.println("Some confidential information...");
    }

    protected void display(){
        System.out.println("In display method..");
        aConfidentialInfo();
    }

}

package y;
import x.Boom;

public class Hack extends Boom{

    public Hack{
        display();
    }   

}

在这里,当我运行类Hack ,它调用display,然后调用aConfidentialInfo ,它是Boom类的私有成员。 Hack类如何能够访问Boom类的私有成员? 是不是私人访问修饰符的侵权。 如何通过一些体面的推理来理解和解释这一点?

不,它访问Boom- display的受保护成员。 这是合法的 - 子类或包中的任何东西都可以访问受保护的成员。 受保护的函数可以访问私有成员,因为受保护的函数是Boom类的一部分。

由于多态性的魔力 ,这是可能的。

Hack 扩展了 Boom,因此可以访问所有公共,包和受保护的字段和方法。 因此它可以调用受保护的display()方法。 借助多态的魔力,在Hack中调用display会调用Boom的方法,该方法可以调用aConfidentialINfo()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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