簡體   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