java成員內部類

成員內部類使用方法:java

一、 Inner 類定義在 Outer 類的內部,至關於 Outer 類的一個成員變量的位置,Inner 類能夠使用任意訪問控制符,如 public 、 protected 、 private 等測試

二、 Inner 類中定義的 test() 方法能夠直接訪問 Outer 類中的數據,而不受訪問控制符的影響,如直接訪問 Outer 類中的私有屬性athis

三、 定義了成員內部類後,必須使用外部類對象來建立內部類對象,而不能直接去 new 一個內部類對象,即:內部類 對象名 = 外部類對象.new 內部類( );url

四、 編譯上面的程序後,會發現產生了兩個 .class 文件spa

其中,第二個是外部類的 .class 文件,第一個是內部類的 .class 文件,即成員內部類的 .class 文件老是這樣:外部類名$內部類名.class.net

 

注:code

一、 外部類是不能直接使用內部類的成員和方法滴可先建立內部類的對象,而後經過內部類的對象來訪問其成員變量和方法。cdn

二、 若是外部類和內部類具備相同的成員變量或方法,內部類默認訪問本身的成員變量或方法,若是要訪問外部類的成員變量,能夠使用 this 關鍵字。對象

例:blog

package secend.demo7.innerclass;
/**
 * 內部類中最多見的就是成員內部類,也稱爲普通內部類。
 * @author wsq547
 *
 */


//外部類MemberInnerClass
public class MemberInnerClass {
	
	//外部類的私有屬性
	private int a = 1;
	private int b = 2;
	
	//內部類Inner
	public class Inner{
		int b = 3; //成員內部類的屬性
		
		//內部類方法
		public void test() {
			System.out.println("訪問外部類中的a:"+a);
			System.out.println("訪問內部類中的b:"+b);
			
			//this關鍵字訪問外部類同名屬性
			System.out.println("訪問外部類中的同名成員屬性b:"+MemberInnerClass.this.b);
		}
	}
	
	//測試成員內部類
	public static void main(String[] args) {
		MemberInnerClass m = new MemberInnerClass();
		Inner inner = m.new Inner();
		inner.test();
	}
	
}

結果:

訪問外部類中的a:1
訪問內部類中的b:3
訪問外部類中的同名成員屬性b:2
相關文章
相關標籤/搜索