1. 程式人生 > >Java基礎學習篇---------封裝

Java基礎學習篇---------封裝

inner span 數據 str get 測試 system 學習 使用外部

一、Java中的內部類

  1.Java中成員內部類

  (1).內部類的方法可以直接訪問外部類的類中的數據,而不受訪問控制符的影響,如直接訪問 Outer 類中的私有屬性

  (2)定義了成員內部類後,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象

  即:內部類 對象名 = 外部類對象.new 內部類( );

  (3).外部類是不能直接使用內部類的成員和方法,可先創建內部類的對象,然後通過內部類的對象來訪問其成員變量和方法。

  (4).如果外部類和內部類具有相同的成員變量或方法,內部類默認訪問自己的成員變量或方法

    如果要訪問外部類的成員變量,可以使用 外部類的對象.this 關鍵字

      public class HelloWorld{
      //外部類的私有屬性name
      private String name = "imooc";
      //外部類的成員屬性
      int age = 20;
      //成員內部類Inner
      public class Inner {
      String name = "愛慕課";
      //內部類中的方法
      public void show() {
      System.out.println("外部類中的name:" + HelloWorld.this.name

);
      System.out.println("內部類中的name:" + name); //默認為內部類成員變量
      System.out.println("外部類中的age:" + age);
    }
  }  
      //測試成員內部類
      public static void main(String[] args) {
      //創建外部類的對象  
      HelloWorld o = new HelloWorld ();
      //創建內部類的對象
      Inner inn = o.new Inner();
      //調用內部類對象的show方法
      inn.show();
    }
  }

  2.Java中靜態內部類

  (1).靜態內部類不能直接訪問外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問

  (2).如果外部類的靜態成員與內部類的成員名稱相同,可通過“類名.靜態成員”訪問外部類的靜態成員

  (3).創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名= new 內部類()

public class MyClass {

// 外部類中的靜態變量score
private static int score = 84;
private int sum = 10;
// 創建靜態內部類
public static class SInner {
// 內部類中的變量score
int score = 91;

public void show() {
System.out.println("訪問外部類中的score:" + MyClass.score);
System.out.println("訪問內部類中的sum:" + new MyClass().sum);
}
}

// 測試靜態內部類
public static void main(String[] args) {
// 直接創建內部類的對象
SInner si = new SInner();
// 調用show方法
si.show();
}
}

3.
Java 中的方法內部類
由於方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和static修飾符
public class MyClass {
private String name = "愛慕課";
// 外部類中的show方法
public void show() {
// 定義方法內部類
class MInner {
int score = 83;
public int getScore() {
return score + 10;
}
}

// 創建方法內部類的對象
MInner mi = new MInner();
// 調用內部類的方法
int newScore = mi.getScore();
System.out.println("姓名:" + name + "\n加分後的成績:" + newScore);
}
// 測試方法內部類
public static void main(String[] args) {
// 創建外部類的對象
MyClass mo = new MyClass();
// 調用外部類的方法
mo.show();
}
}
 

  

Java基礎學習篇---------封裝