1. 程式人生 > >成員內部類 和內部類靜態修飾

成員內部類 和內部類靜態修飾

/*
	成員內部類的修飾符:
		private 為了保證資料的安全性
		static 為了方便訪問資料
			注意:靜態內部類訪問的外部類資料必須用靜態修飾。
	
	案例:我有一個人(人有身體,身體內有心臟。)
		
		class Body {
			private class Heart {
				public void operator() {
					System.out.println("心臟搭橋");
				}
			}
			
			public void method() {
				if(如果你是外科醫生) {
					Heart h = new Heart();
					h.operator();
				}
			}
		}
		
		按照我們剛才的講解,來使用一下
		Body.Heart bh = new Body().new Heart();
		bh.operator();
		//加了private後,就不能被訪問了,那麼,怎麼玩呢?
		Body b =  new Body();
		b.method();
*/
class Outer {
	private int num = 10;
	private static int num2 = 100;
	
	//內部類用靜態修飾是因為內部類可以看出是外部類的成員
	public static class Inner {
		public void show() {
			//System.out.println(num);
			System.out.println(num2);
		}

		public static void show2() {
			//System.out.println(num);
			System.out.println(num2);
		}		
	}
}

class InnerClassDemo4 {
	public static void main(String[] args) {
		//使用內部類
		// 限定的新靜態類
		//Outer.Inner oi = new Outer().new Inner();
		//oi.show();
		//oi.show2();
		
		//成員內部類被靜態修飾後的訪問方式是:
		//格式:外部類名.內部類名 物件名 = new 外部類名.內部類名();
		Outer.Inner oi = new Outer.Inner();
		oi.show();
		oi.show2();
		
		//show2()的另一種呼叫方式
		Outer.Inner.show2();
	}
}