Java的内部类(无静态内部类)

版权声明:欢迎读者转载,如果有问题请给与评论。 https://blog.csdn.net/qq_41848006/article/details/83870674
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);
	//调用匿名内部类的方法

	
	
	
	 

}
}

猜你喜欢

转载自blog.csdn.net/qq_41848006/article/details/83870674