欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年12月17日 09:51:01   作者:阿廖莎  
這篇文章主要介紹了java中的類為什么只能用public修飾,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

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

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

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

類內(nèi)部 本包 子包 外部包
public v v v v
protected v v v x
default v v x x
private v x x x

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

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

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

關于內(nèi)部類:

內(nèi)部類分為成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。

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

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

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

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

關于接口

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

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

修飾構造方法

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

public class SingletonTest {
	public static void main(String[] args) {
		//測試
		Singleton instance = Singleton.getInstance();
		Singleton instance2 = Singleton.getInstance();
		System.out.println(instance == instance2); // true
		System.out.println("instance.hashCode=" + instance.hashCode());
		System.out.println("instance2.hashCode=" + instance2.hashCode());
	}
}

//餓漢式
class Singleton {
	//1. 構造器私有化
	private Singleton() {
	}
	
	//2.本類內(nèi)部創(chuàng)建對象實例
	private final static Singleton instance = new Singleton();
	
	//3. 提供一個公有的靜態(tài)方法,返回實例對象
	public static Singleton getInstance() {
		return instance;
	}

以上就是java中的類為什么只能用public修飾?的詳細內(nèi)容,更多關于java public修飾的資料請關注腳本之家其它相關文章!

相關文章

  • SpringCloud網(wǎng)關組件zuul實例解析

    SpringCloud網(wǎng)關組件zuul實例解析

    這篇文章主要介紹了SpringCloud網(wǎng)關組件zuul實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java中MyBatis Plus知識點總結(jié)

    Java中MyBatis Plus知識點總結(jié)

    在本篇文章里小編給大家整理一篇關于Java中MyBatis Plus知識點總結(jié),需要的朋友們參考下。
    2019-10-10
  • jmeter的時間戳函數(shù)使用

    jmeter的時間戳函數(shù)使用

    在使用jmeter做接口測試的時候,經(jīng)常會要用到日期這種函數(shù),本文主要介紹了jmeter的時間戳函數(shù)使用,感興趣的可以了解一下
    2021-11-11
  • Java生成的隨機數(shù)靠譜嗎?多少次會重復?

    Java生成的隨機數(shù)靠譜嗎?多少次會重復?

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著Java生成的隨機數(shù)靠不靠譜展開,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06
  • Springboot Autowried及Resouce使用對比解析

    Springboot Autowried及Resouce使用對比解析

    這篇文章主要介紹了Springboot Autowried及Resouce使用對比解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • flyway實現(xiàn)java 自動升級SQL腳本的問題及解決方法

    flyway實現(xiàn)java 自動升級SQL腳本的問題及解決方法

    大家在平時開發(fā)自己寫SQL語句忘記在所有環(huán)境執(zhí)行,需要新增環(huán)境做數(shù)據(jù)遷移,那么遇到這樣的問題該如何解決呢?本文通過場景分析給大家介紹java 自動升級SQL腳本的策略,感興趣的朋友一起看看吧
    2021-07-07
  • Java利用異常中斷當前任務的技巧分享

    Java利用異常中斷當前任務的技巧分享

    在日常開發(fā)中,我們經(jīng)常遇到調(diào)用別人的代碼來完成某個任務,但是當代碼比較耗時的時候,沒法從外部終止該任務,所以本文為大家介紹了如何利用異常中斷當前任務,需要的可以參考下
    2023-08-08
  • Jemalloc優(yōu)化MySQL和Nginx

    Jemalloc優(yōu)化MySQL和Nginx

    這篇文章主要介紹了Jemalloc優(yōu)化MySQL和Nginx的相關資料,需要的朋友可以參考下
    2016-01-01
  • 使用HttpClient實現(xiàn)文件的上傳下載方法

    使用HttpClient實現(xiàn)文件的上傳下載方法

    下面小編就為大家?guī)硪黄褂肏ttpClient實現(xiàn)文件的上傳下載方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • SpringBoot自定義Starter及使用

    SpringBoot自定義Starter及使用

    這篇文章主要介紹了SpringBoot自定義Starter及使用,Starter是Spring Boot中的一個非常重要的概念,Starter相當于模塊,它能將模塊所需的依賴整合起來并對模塊內(nèi)的Bean根據(jù)環(huán)境進行自動配置,需要的朋友可以參考下
    2023-07-07

最新評論