簡體   English   中英

當我們在默認類中包含公共方法時,為什么編譯器沒有給出錯誤

[英]Why does the compiler not give error when we have public methods inside default class

當我們在默認類中包含公共方法時,為什么JAVA編譯器不給出錯誤?

當我們有非公共類時(假設具有默認訪問級別),並且如果我們在該類中有如下公共方法,

class Main {

    public void doStuff() {

    }
}

那么我們將無法從同一包的外部訪問上述doStuff()方法。 但是為上述方法減速使用公共訪問修飾符是合法的。 那么它的目的是什么?

允許public訪問具有包可見性的類的成員沒有害處:以這種方式定義它並不矛盾,因此編譯器允許這樣做。

但是,您肯定是正確的: public包可見的類的成員不會擴大其可見性:如果擁有的類具有包可見性,那么使其所有公共成員也都可以包可見也不會改變任何事情。

因為它不是錯誤,並且可能有必要避免錯誤:例如,如果它是接口方法的實現。

同一包中的某人可以實例化Main,並將其作為對象或接口傳遞給另一個類。 在前一種情況下,必須像toString()和equals()這樣的方法是公共的,在后一種情況下,該Interface的方法必須是公共的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM