国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

java中的類為什么只能用public修飾?

瀏覽:2日期:2022-08-19 13:31:46

首先,類只能使用public修飾是一個偽命題,應該說我們只見到過使用public修飾的類,還有一些類沒有訪問修飾符,此時訪問權限為default。其次,類實際上分為外部類和內部類(inner class),一般的類都是外部類,內部類需要依賴外部類生成,內部類可以用各種訪問修飾符修飾。所以問題轉化成,為什么不能使用private和protected修飾外部類?

我們知道,在Java中,訪問修飾符可以修飾類、方法、變量和構造方法。

訪問權限由高到低有以下4種

類內部 本包 子包 外部包 public v v v v protected v v v x default v v x x private v x x x

我們使用訪問修飾符去修飾類,就是為了讓類之間根據各種權限來訪問。

假如外部類使用private修飾,則不能被其它類所訪問,這個類也就失去了意義。

假如外部類使用protected修飾,看起來與default相比,在包內可訪問的基礎上,包外的子類也可訪問。但包外想成為子類需要先繼承父類,然而無法找到該父類實際上無法繼承(先有雞還是先有蛋的問題),效果與default一致,也就沒必要存在了。

關于內部類:

內部類分為成員內部類、局部內部類、匿名內部類和靜態內部類。

成員內部類是定義在另一個類中的類,是最普通的一種內部類。

class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } class Draw { //內部類 public void drawSahpe() { System.out.println('drawshape'); } }}

這樣看起來,類Draw像是類Circle的一個成員,Circle稱為外部類。成員內部類可以無條件訪問外部類的所有成員屬性和成員方法(包括private成員和靜態成員)。

內部類可以用private、protected、default、public修飾,使用private修飾只能在外部類內訪問。

關于接口

public interface Comparable<T>{ int compareTo(T other);}

接口中的所有方法自動地屬于public,在接口中聲明方法時不必提供關鍵字public。

修飾構造方法

在單例設計模式中,我們使用private修飾構造方法,將構造器私有化,表示在類外部不能實例化該類。在類內部實例化后,提供一個可供外部訪問的方法,返回實例對象。

public class SingletonTest {public static void main(String[] args) {//測試Singleton instance = Singleton.getInstance();Singleton instance2 = Singleton.getInstance();System.out.println(instance == instance2); // trueSystem.out.println('instance.hashCode=' + instance.hashCode());System.out.println('instance2.hashCode=' + instance2.hashCode());}}//餓漢式class Singleton {//1. 構造器私有化private Singleton() {}//2.本類內部創建對象實例private final static Singleton instance = new Singleton();//3. 提供一個公有的靜態方法,返回實例對象public static Singleton getInstance() {return instance;}

以上就是java中的類為什么只能用public修飾?的詳細內容,更多關于java public修飾的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 保康县| 宜川县| 溆浦县| 禹州市| 石阡县| 辉南县| 庆云县| 大足县| 方城县| 洛扎县| 章丘市| 交城县| 龙游县| 天津市| 嘉禾县| 册亨县| 和林格尔县| 甘谷县| 邵阳市| 饶阳县| 福州市| 逊克县| 东乡县| 齐河县| 梁山县| 东兰县| 岳阳县| 长兴县| 界首市| 东辽县| 西昌市| 福建省| 子长县| 张北县| 水城县| 武清区| 牡丹江市| 玛沁县| 榆社县| 镇赉县| 苏尼特左旗|