天天看點

Java的各種内部類

1.普通内部類

package learn2;

//外部類HelloWorld
public class NeiBuClass {
  
  // 内部類Inner,類Inner在類HelloWorld的内部
	public class Inner {
		//建立一個内部類方法
		public void show() {
			System.out.println("welcome to Chain!");
		}
	}
  
	public static void main(String[] args) {
      
      // 建立外部類對象
		NeiBuClass hello = new NeiBuClass();
      // 建立内部類對象
		Inner i = hello.new Inner();
      // 調用内部類對象的方法
		i.show();
	}
}

           
package learn2;
//外部類
public class Outer {
	//外部類的私有屬性name
    private String name = "Mi";
    
    //外部類的成員屬性
    int age = 20;
    
	//成員内部類Inner
	public class Inner {
		String name = "小米";
        //内部類中的方法
		public void show() { 
			System.out.println("外部類中的name:" + Outer.this.name);
			System.out.println("内部類中的name:" + name);
			System.out.println("外部類中的age:" + age);
		}
	}
    
	//測試成員内部類
	public static void main(String[] args) {
        
        //建立外部類的對象
		Outer o = new Outer (); 
        
        //建立内部類的對象
		Inner inn =o.new Inner();
        
        //調用内部類對象的show方法
		inn.show();
	}
}

           

2.内部靜态類

package learn2;
//外部類
public class Souter {
	private int a = 90;//外部類的私有變量
	static int b = 3;//外部類的靜态變量
	
	//内部靜态類
	public static class Sinner{
		int b = 2;//内部靜态類的變量
		public void show() {
			System.out.println("通路外部類中的變量b:"+Souter.b);
			System.out.println("通路内部類中的變量b:"+b);
		}
	}
	public static void main(String[]args){
		Sinner i = new Sinner();//直接建立内部靜态類的對象
		i.show();//對内部靜态類中的方法進行調用
	}
}

           

3.方法内部的類

package learn2;

public class MethodInClass {
	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) {
        
		// 建立外部類的對象
        MethodInClass mo = new MethodInClass();
        
        // 調用外部類的方法
		mo.show();
	}
}