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

Java Inner Class

編輯:關於JAVA

Inner Class 即嵌套類,也即C++和C#中的Nested Class。但Java 的Inner Class 與 C++和C#最大的不同之處在於,嵌套類包含一個指向其容器類的引用,可以訪問容器類的成員。以下代碼演示了這一點:

public class Container {

String Name;

class InnerClass

{

InnerClass(){};

public void func()

{

System.out.println(Name);

}

}

public Container(String name){

Name=name;

InnerClass a=new InnerClass();

}

public static void main(String [] arg)

{

Container a=new Container(“ContainerA");

InnerClass b=a.new InnerClass(); //注意此處

InnerClass c=(new Container(“ContainerB")).new InnerClass(); //本質上等價於上一句

a.func();

c.func();

}

}

注意其中獨特的new語法,在靜態函數要創建一個Inner Class,必須有一個其容器類的實例。如果直接創建

InnerClass b=new InnerClass();

則會導致編譯出錯。

而在Container的構造函數中,創建InnerClass時,自動將this作為InnerClass的引用。

在Inner Class 中使用容器類的成員,不需指定實例,自動指向創建它的容器類。

這是一個很有用的語法特征,編譯器替我們省了許多事。

本例的輸出是:

ContainerA

ContainerB

還可以看到,Inner Class 可以訪問容器類的任何成員,不管是public、private或protected的成員全是透明的。反之則不然,容器類只能訪問Inner Class的public成員。

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