程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java—封裝

Java—封裝

編輯:關於JAVA

Java—封裝。本站提示廣大學習愛好者:(Java—封裝)文章只能為提供參考,不一定能成為您想要的結果。以下是Java—封裝正文


  • 封裝
  1. 將類的某些信息隱藏在類的內部,不允許外部程序直接訪問,而是通過該類提供的方法類實現對隱藏信息的操作和訪問。
  2. 封裝的實現步驟:修改屬性的可見性(設為private)=>創建setter和getter方法(用於屬性的讀寫)=>在setter和getter方法中加入屬性控制語句(對屬性值的合法性進行判斷)
  • Java中的包
  1. 包的作用:管理Java文件;解決同名文件沖突
  2. 定義包:package 包名,注意:必須放在Java源程序的第一行;包名間可以使用“.”號隔開,如:com.test.Myclass
  3. 系統中的包:java.(功能).(類)
  4. 包的使用:可以通過import關鍵字,在某個文件使用其他文件中的類。如import com.test.Myclass;
  5. java中,包的命名規范是全小寫字母拼寫。
  6. 使用包的時候,不但可以加載某個包下的所有文件,如:com.test.*;也可以加載某個具體子包下的所有文件,如:com.test.music.*

  注:默認情況下,java會將同一個包內的類自動導入

  以下定義了兩個同名Telephone的類:

package com.test;

public class Telephone {
    private double screen;
    public double getScreen() {
        return screen;
    }
    public void setScreen(double newScreen) {
        screen = newScreen;
    }
    public Telephone(){
        System.out.println("com.test.Telephone無參數的構造方法");
    }
}

 

package com.test.second;

public class Telephone {
    public Telephone() {
        System.out.println("com.test.secont.Telephone");
    }
}

  Demo.java

package com.test;
import com.test.Telephone;

public class Demo {

    public static void main(String[] args) {
        Telephone phone = new Telephone();
    }

}

  運行結果:

  com.test.Telephone無參數的構造方法

package com.test;
import com.test.second.Telephone;

public class Demo {

    public static void main(String[] args) {
        Telephone phone = new Telephone();
    }

}

  運行結果:

  com.test.secont.Telephone

  • 訪問修飾符
  1. 可以修飾屬性和方法的訪問范圍
訪問修飾符 本類 同包 子類 其他 private √       默認 √ √     protected √ √ √   public √ √ √ √
  •  this關鍵字

  this代表當前對象,this.屬性 操作當前對象的屬性;this.方法 調用當前對象的方法

  • 內部類

  內部類,是定義在另一個類裡面的類,與之對應,包含內部類的類被稱為外部類。

  內部類的作用:

  1. 內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類
  2. 內部類的方法可以直接訪問外部類的所有數據,包括私有的數據
  3. 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便
  4. 內部類分為:成員內部類、靜態內部類、方法內部類、匿名內部類
  •  成員內部類

  

  1. Inner 類定義在 Outer 類的內部,相當於 Outer 類的一個成員變量的位置,Inner 類可以使用任意訪問控制符,如 public 、 protected 、 private 等
  2. Inner 類中定義的 test() 方法可以直接訪問 Outer 類中的數據,而不受訪問控制符的影響
  3. 定義了成員內部類後,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象,即:內部類 對象名 = 外部類對象.new 內部類( );
  4.  編譯上面的程序後,會發現產生了兩個 .class 文件,Outer$Inner.class和Outer.class,第二個是外部類的 .class 文件,第一個是內部類的 .class 文件,即成員內部類的 .class 文件總是這樣:外部類名$內部類名.class

  注意:

  1. 外部類是不能直接使用內部類的成員和方法
  2. 如果外部類和內部類具有相同的成員變量或方法,內部類默認訪問自己的成員變量或方法,如果要訪問外部類的成員變量,可以使用 this 關鍵字

  

  • 靜態內部類

  

  1. 靜態成員類不能直接訪問外部類的非靜態成員,可以通過new 外部類().成員來訪問
  2.  如果外部類的靜態成員與內部類的成員名稱相同,可通過“類名.靜態成員”訪問外部類的靜態成員;如果外部類的靜態成員與內部類的成員名稱不相同,則可通過“成員名”直接調用外部類的靜態成員
  3. 創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名= new 內部類();
  • 方法內部類

  方法內部類是內部類定義在外部類的方法中。方法內部類只在該方法的內部可見。

  注意:由於方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和static修飾符。

package com.test;

public class Demo12 {
    
    public void show() {
        final int a = 12;
        int b = 13;
        
        class MInner {
            int c= 2;
            public void print() {
                System.out.println("外部類方法中的變量a=" + a);
                System.out.println("外部類方法中的變量b=" + b);
                System.out.println("內部類中的變量c=" + c);
            }
        }
        MInner mi = new MInner();
        mi.print();
    }
    
    public static void main(String[] args) {
        Demo12 demo = new Demo12();
        demo.show();
    }
}

  運行結果:  

  外部類方法中的變量a=12
  外部類方法中的變量b=13
  內部類中的變量c=2

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved