zoukankan      html  css  js  c++  java
  • Java内部类

    内部类(inner class):定义在还有一个类中的类。

    为什么须要使用内部类呢?原因有二:

    一、内部类方法能够訪问该类定义所在作用域中的数据。包含私有的数据。

    二、当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比較便捷。

    对于原因一:

    看以下样例,通过凝视一目了然:

    public class OuterClass {
    	private String outer = "OUTER";
    	
    	public void test(){
    		InnerClass inner = new InnerClass();//同一般类一样。先创建类对象
    		//补全:OuterClass.InnerClass inner = this.new InnerClass();
    		inner.test();//调用方法同一般类一样
    	}
    
    	class InnerClass implements ActionListener{
    		String inner = outer;//就如类的方法一样。可直接訪问类外部域
    		
    		public void test(){
    			System.out.println("TEST");
    		}
    
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			String s = OuterClass.this.outer;
    			//OuterClass.this 表示外围类引用,否则默认隐式參数是this(内部类的引用)
    		}
    	}
    }

    从上面样例可看出,内部类也没什么特别的。就像一个普通的方法,只是它是一个类而已。还能够在同一包下的其它类中通过new OuterClass().new InnerClass()得到此InnerClass对象,这不和调用类的方法一样吗。

    对于原因二:

    见下图中的代码:


    当中选中的代码段可被以下的actionListener取代。匿名即不须要actionListener这种命名,直接new一个对象当作方法的參数就可以。

  • 相关阅读:
    repair grub in Ubuntu
    DNS attack experiment
    新闻随感(摩托罗拉125亿被Google收购)
    成为C++高手必须要看的书
    nginx
    Nginx Pitfalls
    gcc/gdb
    python 删除文件
    Solve nginx Error 413 Request Entity Too Large
    Solve Nginx Error 413: Request Entity Too Large
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5378460.html
Copyright © 2011-2022 走看看