• java内部类


    java内部类主要分为成员内部类、静态内部类、局部内部类、匿名内部类。

    (1)成员内部类(相当于内的成员方法)

           

    package InnerOutter;
    
    /**
     * 成员内部类
     * 
     * @author Administrator
     *
     */
    public class OuterClass {
    	// 成员内部类
    	class InnerClass {
    		public InnerClass() {
    			// 构造方法
    		}
    
    		public void inf() {
    			System.out.println("内部类方法!");
    		}
    
    		private int y = 0;// 内部类成员变量
    	}
    
    	// 在外部类实例化内部类实例化引用
    	InnerClass in = new InnerClass();
    
    	// 外部方法
    	public void test() {
    		in.inf();
    	}
    
    	/**
    	 * 外部方法,返回内部类的引用
    	 * 
    	 * @return
    	 */
    	public InnerClass doit() {
    		in.y = 5;
    		return new InnerClass();
    	}
    
    	public static void main(String[] args) {
    		OuterClass out=new OuterClass();
    		//内部类的对象实例化操作必须在外部类或者外部类中非静态方法中实现

                             //OuterClass.InnerClass in2=out.new InnerClass();

    		OuterClass.InnerClass in=out.doit();
    		System.out.println(in.y);
    
    	}
    }
    

      

    (2)匿名内部类(这种内部类用得比较多):在编写程序的时候,不一定要给内部类取一个名字,可以直接以对象名代替。所有匿名内部类的实现代码都写在大括号内。在图形界面编程的事件监听代码中,会大量使用匿名内部类,这样可以简化代码,并增加代码的可读性。

    public void sortNameAsc() {
    		users=db.getUserList();
    		Collections.sort(users,new Comparator<User>() {
    
    			@Override
    			public int compare(User o1, User o2) {
    				return o1.getName().compareTo(o2.getName());
    			}
    		});
    		for(User s:users){
    			System.out.println(s);
    		}
    	}
    

      

    (3)局部内部类:是指在类的方法中定义的内部类,,它的作用范围也是在这个方法体内。

           

    package InnerOutter;
    /**
     * 局部内部类
     * @author Administrator
     *
     */
    public class SellOutClass {
    	private String name;
    	public SellOutClass(){
    		name="苹果";
    	}
    	//成员方法
    	public void sell(){
    		class Apple{//局部内部类
    			int innerPrice=0;
    			public Apple(int price){//局部内部类构造方法
    				innerPrice=price;
    			}
    			public void price(){//局部内部类方法
    				System.out.println("现在开始销售"+name);
    				System.out.println("价格为:"+innerPrice+"元");
    			}
    		}
    		//在方法体内调用局部内部类
    		Apple apple=new Apple(20);//实例化局部内部类对象
    		apple.price();
    	}
    	public static void main(String[] args) {
    		SellOutClass sel=new SellOutClass();
    		sel.sell();
    	}
    
    }
    

      

    (4)静态内部类:相当于静态方法或者静态变量,在类前面有static修饰,这种内部类使用的比较少。

    (5)内部类也可以继承,它有自己语法。

  • 相关阅读:
    ORACLE的程序包1程序包的基
    JAVA中方法重载,方法覆盖,方法继承等小结
    使用DBMS_JOB包创建ORACLE定时任务
    linux shell 中判断语句
    oracle direction目录
    Java加载类的加载顺序
    Struts2非常简单实用的身份验证功能
    关于ListView优化的一点心得
    使用webview将网页打包成apk
    关于android下的冒烟测试
  • 原文地址:https://www.cnblogs.com/deng-c-q/p/5082245.html
Copyright © 2020-2023  润新知