java的訪問修飾符,java訪問修飾符範圍

本文目錄一覽:

java中類成員的訪問修飾符有哪些

一:訪問修飾符:

1.省略訪問修飾符

具有默認的訪問特性,即具有包訪問特性,只能被同一個包中的類使用。

2.public訪問修飾符

用於說明類和類的成員的訪問權限。這種類叫公有類。在一個文件中只能有一個public類型的類。

例如:Rect和UseImport兩個類,分別在兩個不同的包中。順便回顧一下不同類要用import導入。(哎,一直就沒記住)

//Rect.java

pacakage

my;

public

class

Rect

{

private

int

a,b;

public

void

init(int

len,int

width)

{

a=len;

b=width;

}

public

int

area()

{

return

a*b;

}

}

//UseImport.java

import.my.*;//導入my

包的所有類

public

class

UseImport

{

public

static

void

main(string[]

args)

{

Rect

x=new

Rect();

x.init(2,3);

System.out.println(“矩形面積為:”+x.area());

}

}

3.private

用private修飾的類成員成為私有成員,只能在聲明該成員的類中使用,不能在類外使用。一般通過本類中公有方法進行訪問。

4.protected

protected修飾的類成員為保護成員,可以被三種類使用,分別是該類本身,該類的所有子類,該類同包的其他類,該類的子類。

5.private

protected

私有保護成員。可被兩種類使用。分別是:該類本身和該類的所有子類。

二:特徵修飾符

1.abstract:抽象

修飾類為抽象類,修飾方法為抽象方法。只要類中有抽象方法,就必須定義為抽象類。抽象方法只能聲明,不能實現。但是可以在其子類中對抽象方法進行實現。抽象類中也可以包含非抽象方法。

2.final:最終

修飾的類為終止類,不能有子類。修飾變量為終止變量,只可賦值一次。修飾方法為終止方法,不能在子類中更改。如Socket、ServerSocket等都是final類,防止黑客派生子類進行破壞。同時,final與abstract是相互矛盾的。

3.static:靜態

靜態成員無需通過對象調用,可以直接通過類名直接調用。

public

class

RectArea//輸出6

12

{

public

static

void

main(String[]

args)

{

System.out.println(area(2,3));

System.out.println(area(3,4));

}

static

void

area(int

a,int

b)

{

return

a*b;

}

}

4.native

用native修飾的為本地方法。它修飾的方法在程序外部使用其他編程語言編寫。(這個步驟比較多,所以就木有繼續研究了)

5.synchronized

修飾的方法為同步方法。

Java 訪問控制修飾符

幫你找了一篇博客,寫的很好:

public :能被所有的類(接口、成員)訪問。

protected:只能被本類、同一個包中的類訪問;如果在其他包中被訪問,則必須是該成員所屬類的子類。

private:成員變量和方法都只能在定義它的類中被訪問,其他類都訪問不到。對成員變量的進行獲取和更改,一般用get(),set() ,public 方法。實現了Java面向對象的封裝思想。

friendly(缺省):訪問權限與protected相似,但修飾類成員時不同包中的子類不能訪問。

static:修飾變量,稱為類變量或靜態變量。靜態變量是和類存在一起的,每個實例共享這個靜態變量,在類加載時初始化。

final:被聲明為final的變量必須在聲明時給定初值,而在以後的引用中只能讀取不能更改。修飾類是不能派生出子類,修飾方法時,不能被當前子類的方法覆蓋。

abstract:不能創建abstract 類的實例。一般被繼承,實現抽象方法。類只要有一個abstract方法,類就必須定義為abstract,但abstract類不一定非要保護abstract方法不可。

如果對你有幫助請採納,謝謝!

java 的訪問修飾符是什麼?

Java中的訪問修飾符

Java面向對象的基本思想之一是封裝細節並且公開接口。Java語言採用訪問控制修飾符來控制類及類的方法和變量的訪問權限,從而向使用者暴露接口,但隱藏實現細節。訪問控制分為四種級別:

(1)public: 用public修飾的類、類屬變量及方法,包內及包外的任何類(包括子類和普通類)均可以訪問;

(2)protected: 用protected修飾的類、類屬變量及方法,包內的任何類及包外那些繼承了該類的子類才能訪問(此處稍後解釋),protected重點突出繼承;

(3)default: 如果一個類、類屬變量及方法沒有用任何修飾符(即沒有用public、protected及private中任何一種修飾),則其訪問權限為default(默認訪問權限)。默

認訪問權限的類、類屬變量及方法,包內的任何類(包括繼承了此類的子類)都可以訪問它,而對於包外的任何類都不能訪問它(包括包外繼承了此類的子類)。default重點突出包;

(4)private: 用private修飾的類、類屬變量及方法,只有本類可以訪問,而包內包外的任何類均不能訪問它。 

網上一些資料及一些書上用表格對java訪問修飾符做了清楚的總結,如下表所示:

重要總結:通過上面的分析,我們可以看到:

1. public、private和protected對我們來說沒有任何異議。

2. 頂層類只能用public訪問修飾符和default(默認)訪問修飾符修飾,其中用默認修飾符修飾的類(及沒有任何修飾符的類,如class B{})不能被其他包中的類繼承,這也說明了default(默認)訪問修飾符突出的是包權限

3. protected:本人做了一次實驗,發現在不同包的子類中,new一個父類對象,並用該父類對象去訪問父類中的用protected修飾的類屬變量和方法時不能訪問,而new一個子類對象時,子類對象可以訪問(說明protected修飾的類可以被其他包中的類繼承)。也可以在子類重寫父類的方法中使用super關鍵字調用。這豈不是和上面表格中的總結(紅色對勾)衝突了?本人也是百思不得其解。最後在網上找到了一個相對比較認可的解釋,如下:

protected修飾符的修飾的成員變量和方法也稱為受保護的成員變量和方法, 受保護的成員變量和方法可以在本類或同一個包中的其它類(包括子類)中通過類的實例進行訪問,也可以被同一個包中的類或不同包中的類繼承,但是不能在不同包中的其它類(包括子類)中通過類的實例進行訪問。

4. 如果一個類使用public修飾,那該類的類名必須與他所在的源文件名相同。一個.java源文件中有且只有一個public類,頂層類只能用public和默認修飾符(即無修飾符)修飾;

5. final修飾的類不能被繼承,沒有子類。

6. abstract修飾的類不能被實例化,必須被子類繼承。類只要有一個抽象方法就必定是抽象類,但抽象類不一定要有抽象方法。

最終總結,就一句話:protected修飾符所修飾的類(這句話中指父類)屬成員變量和方法,只可以被子類訪問,而不管子類是不是和父類位於同一個包中。default修飾符所修飾的類屬成員變量和方法,只可被同一個包中的其他類訪問,而不管其他類是不是該類的子類。protected屬於子類限制修飾符,而default屬於包限制修飾符。

java默認訪問修飾符

Java中成員屬性默認修飾符為default.

舉個栗子 : 假如有成員變量name,類型為String,則聲明為String name ;

此時該變量的默認權限修飾符就是default.

下附Java成員權限修飾符權限 :

private : 只能在當前類中訪問

default : 只能在當前類以及同一個包下訪問

protected : 除了當前類以及同一個包下訪問外,還為不在同一個包下的子類提供了一種訪問父類成員的方式

public : 同一個工程下,所有包均可訪問.

望採納!如贊同請點贊!您的肯定就是我的動力!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/190003.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 13:53
下一篇 2024-11-29 13:53

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論