1. 程式人生 > >Java的內部類(無靜態內部類)

Java的內部類(無靜態內部類)

package tgjavaday5;

import org.omg.CORBA.PUBLIC_MEMBER;

/**
 * 
 * @author asus Tiger
 * 對四大內部類的實現
 */

//成員內部類
interface inter1{
	void interFun();
	void interFun2(String str);
}
class Out1 {
	private int id=0;
	private String  name=null;
	private int age=0;
    public Out1(int id,String name,int age){
	this.id=id;
	this.name=name;
	this.age=age;
}
    //成員內部類Inner1
    //成員內部類可以呼叫外部類的所有資料……
    class Inner1 {
		 int atest=10;
    		public void innerFun1(){
				System.out.println("我是成員類中的函式");
			}
			 public void innerFun2 (String str){
				String string=str.toLowerCase();
				System.out.println(string);
			}
			 public void innerFun3(){
				 String string2=name.toString();
				 System.out.println("name.tostring()的值為:"+string2);
			 }
		}
    /*區域性內部類Inner2:在方法中定義一個類,該類只屬於該方法,不屬於外部類!
     * 區域性內部類Inner2不能用訪問修飾符,它只限定於該方法中使用
     * 區域性內部類只能訪問該方法的final資料型別	     */
    
     public void innerFun3( final int []a){
    	 class Inner2{
    		//陣列排序
    		private  int [] b=a;
    		void swap(int []b){
    			for(int i=0;i<b.length;++i){
    				for(int j=i+1;j<b.length;++j){
		    			if(b[i]>b[j]){int temp=b[i];b[i]=b[j];b[j]=temp;}
		    		}
	    		}
    		}
    		void print(int []b){
    			for(int x :b){
    				System.out.print(x+" ");
    			}
    		}
    		/*驗證區域性內部類是否可以訪問外部類的資料型別
    		 * !int btest=atest;
    		 * 區域性內部類只能訪問該方法的final資料型別,不能訪問外部類的資料型別
    		 */
    	}
    	Inner2 aInner2=new Inner2();
    	aInner2.swap(a);
    	aInner2.print(a);
    }
    /*匿名內部類:匿名內部類也是區域性內部類,無建構函式,
     * 它的成員初始化只能靠構造程式碼塊。
     */
    public Inner1 innerFun4(int id,String name,int age){
       return  new Inner1(){
    		int id;
    		String name;
    		int age;
    		public  void setout1(int id,String name,int age){
    			this.id=id;
    			this.name=name;
    			this.age=age;
    		}
    		
    	public void getId(){
			System.out.println(id);
    	}
    	
    	};
    	}
}
public class Second {
public static void main(String []args){
	Out1 out1=new Out1(01,"tim",10);
	int []a={2,4,5,9,2,4,7,9,6,15,4,24,57,41,89,11};
		//呼叫成員內部類的方法
	Out1.Inner1 inner1=out1.new Inner1();
	inner1.innerFun1();
	inner1.innerFun2("wdweWDQWDQ..';.';DQWDWQDswd");
	inner1.innerFun3();
	//呼叫區域性內部類的方法
	out1.innerFun3(a);
	//呼叫匿名內部類的方法

	
	
	
	 

}
}