自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java基礎(chǔ)分享,一篇文章說透Java訪問修飾符

開發(fā) 后端
java中有四種訪問修飾符:private、default(無相應(yīng)保留字)、protected和public。

1. 前言

Java中有四種訪問修飾符:private、default(無相應(yīng)保留字)、protected和public。

今天,就讓我們來了解一下這四種訪問修飾符合元素的訪問限制吧!

從強到弱依次是private、default、protected和public。

2. 訪問修飾符介紹

java中有四種訪問修飾符:private、default(無相應(yīng)保留字)、protected和public。其含義如下:

  • private:如果一個元素聲明為private,則元素的訪問權(quán)限僅限于當(dāng)前類。
  • default:如果一個元素聲明為default,則元素的訪問權(quán)限僅限于當(dāng)前包。
  • protected:如果一個元素聲明為protected,則有當(dāng)前包下的元素或其子類可以訪問該元素。
  • public:如果一個元素聲明為public,則所有位置都可以調(diào)用元素(無論是在同一類中還是在同一包內(nèi))。

四種訪問修飾符合元素的訪問限制,從強到弱依次是private、default、protected、public。如果類A和類B的訪問修飾符是public,當(dāng)類A中的一個方法想要調(diào)用類B中的一個方法時,可以根據(jù)下圖確定可訪問性: 

 

3. 以下示例說明四種修飾符對元素的訪問限制

3.1 private

類B中的方法要調(diào)用同包下A的private方法,編譯時會報錯: 

  1. package p1 
  2.  
  3. class A { 
  4.     private String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8.     public void display(){ 
  9.         System.out.println(this.getName()); 
  10.     } 
  11.  
  12. package p1 
  13.  
  14. class B{ 
  15.     public void display(){ 
  16.         A a = new A(); 
  17.         System.out.println(a.getName()); 
  18.     } 

3.2 default

類C中的方法要調(diào)用不同包下類A的default方法,編譯時會報錯: 

  1. package p1 
  2.  
  3. public class A { 
  4.     String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8. package p1 
  9.  
  10. public class B{ 
  11.     public void display(){ 
  12.         A a = new A(); 
  13.         System.out.println(a.getName()); 
  14.     } 
  15.  
  16. package p2 
  17.  
  18. public class C { 
  19.     public void display(){ 
  20.         A a = new A(); 
  21.         System.out.println(a.getName()); 
  22.     } 

3.3 protected

類C中的方法要調(diào)用類A的protected方法,編譯時會報錯: 

  1. package p1 
  2.  
  3. public class A { 
  4.     protected String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8. package p2 
  9.  
  10. public class B extends A { 
  11.     public void display(){ 
  12.         System.out.println(super.getName()); 
  13.     } 
  14.  
  15. package p2 
  16.  
  17. public class C { 
  18.     public void display(){ 
  19.         A a = new A(); 
  20.         System.out.println(a.getName()); 
  21.     } 

3.4 public

無訪問限制。 

  1. package p1 
  2.  
  3. public class A { 
  4.     public String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8. package p2 
  9.  
  10. public class B { 
  11.     public void display(){ 
  12.         A a = new A(); 
  13.         System.out.println(a.getName()); 
  14.     } 

4. 當(dāng)子類隱藏(hide)或覆蓋(override)父類方法時,對訪問修飾符的限制

當(dāng)子類中的方法隱藏/覆蓋父類中的方法時,與父類中相應(yīng)方法的訪問修飾符相比,子類方法的訪問修飾符的訪問限制應(yīng)相同或更弱。這是面向?qū)ο蟮幕驹瓌t,即子類應(yīng)該比父類更完美,因此子類的可訪問性應(yīng)該更強。

舉例如下: 

  1. class Father { 
  2.  
  3.     protected static void staticMethod() { 
  4.  
  5.     } 
  6.  
  7.     public void method() { 
  8.  
  9.     } 
  10.  
  11. class Son extends Father { 
  12.  
  13.     static void staticMethod() { 
  14.  
  15.     } 
  16.  
  17.     protected void method() { 
  18.  
  19.     } 

5. 元素支持的訪問修飾符。

每個元素(如類別、接口、注釋、結(jié)構(gòu)函數(shù)、成員變量、成員方法等)都會顯示或隱示訪問修改符,但并不是每個元素都支持四個訪問修改符: 

  • 對于直接定義在包中的元素,如類、枚舉(本質(zhì)是繼承Enum的類)、接口和注釋(本質(zhì)是繼承Anotation的接口),他們支持的訪問修飾符是public和default。
  • 對于定義在類內(nèi)的元素,如構(gòu)造函數(shù)、成員變量、成員方法、內(nèi)部類別、內(nèi)部接口等,他們支持所有四種訪問修改符。
  • 對于界面中定義的方法,只支持public(如果不指定,則默認public);對于界面中定義的變量,只支持public static final(如果不指定,則默認public static final)。補充說明:界面支持三種方法,即無消息體的方法(默認修飾符為public abstract),通過default保留字定義(默認修飾符為public),通過static保留字定義(默認修飾符為public)。
責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2021-07-01 10:01:16

JavaLinkedList集合

2022-11-04 10:45:11

Java基礎(chǔ)CPU

2023-05-08 08:21:15

JavaNIO編程

2021-05-31 08:59:57

Java數(shù)據(jù)庫訪問JDBC

2009-06-12 13:37:47

訪問權(quán)限修飾符Java教程

2017-09-04 13:44:00

Java

2020-10-09 08:15:11

JsBridge

2009-06-19 10:51:39

Scalapackage訪問修飾符

2020-12-29 09:05:48

基礎(chǔ)DjangoORM

2009-08-24 16:49:39

C#修飾符

2021-03-04 08:34:54

Java交換變量字符串基礎(chǔ)

2025-01-09 11:17:19

2021-04-14 10:00:44

Python運算符重載

2022-08-09 08:00:55

AWS安全API

2021-02-24 10:14:04

PythonClassPython基礎(chǔ)

2020-12-21 08:09:55

Java數(shù)據(jù)方法

2017-06-08 22:41:34

框架標(biāo)簽

2022-02-21 09:44:45

Git開源分布式

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺
點贊
收藏

51CTO技術(shù)棧公眾號