1. 程式人生 > >java中public、private、protected、不寫的區別

java中public、private、protected、不寫的區別

前言:在java程式設計中變數和方法前我們通常要加修飾詞來標識他的一個作用範圍。常用的有四種,我們要靈活使用,這樣才能設計出更健壯、易擴充套件的程式碼。

  1. public:
    ①具有最大的訪問許可權,可以訪問任何一個在classpath下的類、介面、異常等。它往往用於對外的情況,也就是物件或類對外的一種介面的形式。(我們可以通過get方法訪問,也可以物件.屬性名來訪問)
  2. private:
    ①類的建立者和內部方法使用(注意只能是本類,不是本物件),內部類也無法使用

  3. protected:
    ①子類可以訪問protected修飾的變數和方法。(只要是子類,即使不同包)。②同包中可以訪問protected。

  4. 不寫:
    ①宣告時沒有加修飾符,認為是friendly修飾,包內部訪問。

測試程式碼

/**
 * 父類
 * 
 * @author lijianbo
 *
 */
public class Parent {
    // 任何地方都可以訪問
    public String publicName;
    // 只能類本身使用,物件都無法使用,內部類也無法使用
    private String privateStr = "privateStr";
    // 受保護的方法,只能在本類,同包,子類中訪問
    protected String protectedStr = "protectedStr"
; // 不寫修飾符,同包中訪問 String noDeclarationStr = "沒有修飾符修飾的Str"; public String getPublicName() { return publicName + getPrivateStr(); } public void setPublicName(String publicName) { this.publicName = publicName; } private String getPrivateStr() { return
privateStr; } protected String getProtectedStr() { return protectedStr; } } // 內部類 class InnerClass { public static void main(String[] args) { // getPrivateStr(); error 內部類也無法訪問私有的 } }
/**
 * 子類
 * 
 * @author lijianbo
 *
 */
public class Sun extends Parent {

    // protected 修飾的可以使用
    public String getName() {
        return protectedStr;
    }

    public String getName2() {
        return getProtectedStr();
    }

}
/**
 * 測試public、private、protected、不寫修飾符
 * 
 * @author lijianbo
 *
 */
public class authorityTest {
    public static void main(String[] args) {
        /*
         * public 修飾的專案中任何地方都可以訪問
         */
        Parent parent = new Parent();
        parent.setPublicName("public名字");
        String publicName = parent.getPublicName();
        System.out.println(publicName);

        // 物件.屬性名
        String publicName2 = parent.publicName;
        System.err.println(publicName2);

        /*
         * protected 同包可以訪問
         */
        parent.getProtectedStr();
        System.out.println("--------------------");

        // 子類中可以獲取父類的protect方法、屬性(即時不同包可以訪問)
        Sun sun = new Sun();
        String protectedStr1 = sun.protectedStr;
        System.out.println(protectedStr1);
        String protectedStr2 = sun.getProtectedStr();
        System.out.println(protectedStr2);

        /*
         * 沒有修飾符修飾,認為是friendly修飾,同包訪問
         */
        String noDeclarationStr = parent.noDeclarationStr;
        System.err.println(noDeclarationStr);
    }

}

列印結果為:
public名字privateStr
public名字

protectedStr
protectedStr
沒有修飾符修飾的Str

相關推薦

javapublicprivateprotected等關鍵字的使用場景。

開發內部專案或者單獨模組(非公共模組)時,對訪問許可權的修飾符的使用可能不是很注意,但在公共程式碼的書寫或者是sdk一類的開發,訪問修飾符就顯得比較重要了。下面對public,protected,default,private的理解,提供方法: 1.如果涉及到

javapublic,static,private,final,this,protected等關鍵字的概念

都大三了仍對對這些概念中的某些不太熟悉,或者是記不住,今天特地翻書本去網上找資料,把這些給整理記錄下來,以便以後需要用到的時候檢視。 一、訪問許可權 所謂訪問許可權是指物件是否可以通過“.”運算子操作自己的變數或通過“.”運算子使用類中的方法。訪問限制修飾符有privat

C++類publicprivateprotected的作用詳解

首先摘抄一下譚浩強的《C++程式設計》中關於public,private和protected這三個成員訪問限定符的概念性解釋:如果在類的定義中既不指定private,也不指定public,則系統就預設為是私有的。被宣告為私有的(private)成員,只能被本類中的成員函式引用

javapublicprivateprotected區別

1、public 公共,加上這個修飾的類或屬性,可以在同一個包或者別的包裡面訪問 2、private 私有的,加上這個修飾的類或屬性,只能在同類裡訪問,同包和別的包不能訪問 3、protected 保護,加上這個修飾的類或屬性,只能在類和同

Javapublicprivatedefaultprotected區別

public:具有最大的訪問許可權,可以訪問任何一個在classpath下的類、介面、異常等。它往往用於對外的情況,也就是物件或類對外的一種介面的形式。 protected:主要的作用就是用來保護子類的。它的含義在於子類可以用它修飾的成員,其他的不可以,它相當於傳遞給子類的一種繼承的東西 default:

javapublicprivateprotecteddefault的區別

在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes(即同一個包),認為都是自己的朋友friendly。 1、public:public表明該資料成員、成員函式是對所有

javapublicprivateprotected區別

前言:在java程式設計中變數和方法前我們通常要加修飾詞來標識他的一個作用範圍。常用的有四種,我們要靈活使用,這樣才能設計出更健壯、易擴充套件的程式碼。 public: ①具有最大的訪問許可權,可以訪問任何一個在classpath下的類、介面、

C++的public繼承publicprivateprotected

    C++語言是對C語言的一種增強,而其主要貢獻在於,為C語言增加了類和模板等功能,可以幫助實現面對物件程式設計和程式碼複用等更方便的功能。     在C++語言的類,一般都包含兩種成員,分別是成員變數和成員函式。成員變數可以用來表示該類的某些狀態,而成員函式則可以用來

002訪問修飾符public,private,protected,以及(默認)時的區別

的區別 size mar fill 修飾符 default .net cxf 分享 類的成員不寫訪問修飾時默認為default。默認對於同一個包中的其他類相當於公開(public),對於不是同一個包中的其他類相當於私有(private)。受保護(protected)對子類相

c#基礎(三)PublicPrivate以及Protected區別

    被public修飾的成員可以被類的內部或者是外部直接訪問,而private成員只能被類的內部訪問,如果類內部的成員不希望被外界訪問,那麼可以將其宣告為private,這樣的話就可以對不希望被訪問的成員進行保護。正常情況下,在某一個類中,欄位(field)或者是成員變數

protectedpublicprivate,abstractvirtual和override

先看程式。程式是一個計算工資的系統,父類是SalaryClass,子類為SaleSalary。子類在父類基礎上增加了銷售額,按照20%來提成。 父類 SalaryClass using System; using System.Collections.Generic; u

javapublicstatic的理解

首先是public  在說明這四個關鍵字之前,我想就class之間的關係做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes,認為都是自己的朋友。 1、public:public表明該資料成員、成員函式是對所有使用者開放的,所有使用

publicprivateprotected區別

public:宣告方法和屬性可以被隨意訪問。 Protected:宣告的方法和屬性只能被類本身和其繼承子類訪問。 private:只能被定義屬性和方法的類訪問。 private 是完全私有的,只有當前類中的成員能訪問到. protected 是受保護的,只有當前類的成員與繼承該類的類才能訪問. protect

JavaIO流文件讀取寫入和復制

復制 循環 int files catch class close brush system //構造文件File類 File f=new File(fileName); //判斷是否為目錄 f.isDirectory(); //獲取目錄下的文件名 String[] fil

JavaString字符串toString()String.valueOf()String強轉+ ""的區別

builder arc span 但是 內容 end hello 部分 exception Object#toString(): Object object = getObject(); System.out.println(object.toString());

java的構造方法,thissuper的用法

重寫 需要 註意事項 進行 private class print 沒有 系統 1、構造方法 定義:與類同名沒有返回值的方法稱為構造方法; public class test1 {private String name;private int age;public test

Java使用elasticsearch搜尋引擎實現簡單修改等操作

以下的操作環境為:jdk:1.8;elasticsearch:5.2.0 maven架包下載座標為: <dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId&g

[轉]Java的Switch對整型字元型字串型的具體實現細節

轉自http://www.hollischuang.com/archives/61 Java 7中,switch的引數可以是String型別了,這對我們來說是一個很方便的改進。到目前為止switch支援這樣幾種資料型別:byte short int char String 。但是,作為一

Java執行緒的同步非同步以及執行緒的安全

  什麼是執行緒同步?     這裡的“同”是協同的意思,並不是共同。那麼就很好理解同步了,就是一起操作但並不是同時操作。比如流水線組裝汽車,可以視作一個執行緒,只有裝好了上一步的門,才可以裝下一步的門窗玻璃。沒有裝門能裝上玻璃嗎?顯然不行。所以執

Java雙鏈表的查詢插入刪除等

雙向連結串列結構和單向連結串列的區別:最後一個結點的連結地址上,單向連結串列是null,而雙向連結串列是表頭的連結地址。 即雙向連結串列的head和last互相指向 示意圖 表頭為空        head之前的節點是