Java四種訪問控制修飾符知識點(diǎn)總結(jié)
java有四種訪問控制修飾符。
- public
- protected
- private
- default(默認(rèn)為空,不加任何修飾)

為了用代碼對比出其中的區(qū)別,首先建立兩個包,分別為area1和area2;五個類,分別是Person、PersonDemo、PersonSon、PersonTest、OutPerson。
然后Person、PersonDemo、PersonSon放在area1包下。
PersonTest、OutPerson放在area2包下。
四個訪問控制修飾符在同類下的代碼例子:
package area1;
public class Person {
public String _public="公共變量"; //定義一個公共變量
private String _private="私有變量"; //定義一個私有變量
protected String _protected="保護(hù)變量 "; //定義一個保護(hù)變量
String _default="默認(rèn)變量"; //使用默認(rèn)方法定義變量
public void _pub(){ //創(chuàng)建一個公共方法
System.out.println(_public);
}
private void _pri(){ // 創(chuàng)建一個私有方法
System.out.println(_private);
}
protected void _pro(){ //創(chuàng)建一個保護(hù)方法
System.out.println(_protected);
}
void _def(){ //創(chuàng)建默認(rèn)方法
System.out.println(_default);
}
public static void main(String[] args){
Person p=new Person(); //創(chuàng)建對象
p._pub(); //調(diào)用方法
p._pri();
p._pro();
p._def();
}
}
四個訪問控制修飾符在同包不同類(不含子類)下的代碼例子:
package area1;
public class PersonDemo {
public static void main(String[] args){
Person p=new Person(); //創(chuàng)建Person類的對象
p._pub();
p._pri(); //報(bào)錯
p._pro();
p._def();
}
}
四個訪問控制修飾符在同包子類下的代碼例子:
package area1;
public class PersonSon extends Person{ //子類PersonSon繼承父類Person
public static void main(String[] args){
PersonSon son=new PersonSon(); //子類創(chuàng)建對象
son._pub();
son._pro();
son._def();
son._pri(); //報(bào)錯
Person father=new Person(); //父類創(chuàng)建對象
father._def();
father._pub();
father._def();
father._pri(); //報(bào)錯
}
}
四個訪問控制修飾符在同包不同類(不含子類)下的代碼例子:
package area2;
import area1.Person; //引用area1包下的Person類
public class PersonTest {
public static void main(String[] args){
Person p=new Person(); //Person類創(chuàng)建對象
p._pub();
p._pro(); //報(bào)錯
p._pri(); //報(bào)錯
p._def(); //報(bào)錯
}
}
四個訪問控制修飾符在同包子類下的代碼例子:
package area2;
import area1.Person; //引用area1包下的Person類
public class OutPerson extends Person{ //子類繼承父類
public static void main(String[] args){
OutPerson out=new OutPerson(); //子類創(chuàng)建對象
out._pub();
out._pro();
out._pri(); //報(bào)錯
out._def(); //報(bào)錯
}
}
注意:仔細(xì)與圖表對比!
相關(guān)文章
springboot?html調(diào)用js無效400問題及解決
這篇文章主要介紹了springboot?html調(diào)用js無效400的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java中ThreadLocal線程變量的實(shí)現(xiàn)原理
本文主要介紹了Java中ThreadLocal線程變量的實(shí)現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
java hasNextInt判斷是否為數(shù)字的方法
今天小編就為大家分享一篇java hasNextInt判斷是否為數(shù)字的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
簡單談?wù)刯ava的異常處理(Try Catch Finally)
在程序設(shè)計(jì)中,進(jìn)行異常處理是非常關(guān)鍵和重要的一部分。一個程序的異常處理框架的好壞直接影響到整個項(xiàng)目的代碼質(zhì)量以及后期維護(hù)成本和難度。2016-03-03
Java泛型枚舉Annotation接口詳細(xì)解讀與Eclipse發(fā)展
這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
解決新版 Idea 中 SpringBoot 熱部署不生效的問題
這篇文章主要介紹了解決新版 Idea 中 SpringBoot 熱部署不生效的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Jenkins Pipeline為Kubernetes應(yīng)用部署增加狀態(tài)檢測腳本優(yōu)化
這篇文章主要為大家介紹了Jenkins Pipeline為Kubernetes應(yīng)用部署增加狀態(tài)檢測腳本優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
解析Java實(shí)現(xiàn)設(shè)計(jì)模式六大原則之里氏替換原則
里氏替換原則是用來幫助我們在繼承關(guān)系中進(jìn)行父子類的設(shè)計(jì)。它闡述了有關(guān)繼承的一些原則,也就是什么時(shí)候應(yīng)該使用繼承,什么時(shí)候不應(yīng)該使用繼承,以及其中蘊(yùn)含的原理。它是繼承復(fù)用的基礎(chǔ),反映了基類與子類之間的關(guān)系,是對開閉原則的補(bǔ)充,對實(shí)現(xiàn)抽象化具體步驟的規(guī)范2021-06-06

