Java 内部类

  • 内部类:一个类定义在另一个类内部,不能有static成员
  • 在外部类的静态方法中创建内部类要写全名
    Parec2.Content c = q.content()
  • 从内部类链接到外部类:
    • 内部类拥有其外部类的所有元素的访问权限
    • 原因:创建内部类时会获得一个外部类的引用
    • 生成对外部类对象的引用:外部类名+.:
  • 在外部类创建内部类对象:必须使用外部类的对象创建内部类,因为内部类对象隐式地保存了指向外部类的引用
class A{
	public class b{}
	public void static main(String[] args){
		A a = new A();
		A.B b = a.new B();
	}
}
``` 
* 嵌套类:如果外部类对象与内部类对象之间没有关系,可以将内部类声明为static,但不能从嵌套类访问非静态外围类对象
* 使用内部类的意义:可以间接实现多重继承
* Class对象命名:OuterClass$InnerClass
* 匿名内部类:匿名内部类也就是没有名字的内部类,使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
	* 不使用匿名内部类:
	```java
	abstract class Person {
    public abstract void eat();
	}
	class Child extends Person {
    public void eat() {
        System.out.println("eat something");
    }
	}
	public class Demo {
    public static void main(String[] args) {
        Person p = new Child();
        p.eat();
    }
	}
	```
	* 实现接口:
	```java
	interface Person {
    public void eat();
	} 
	public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
	}
	```
	* 最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口<br>
	```java
	public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}
	```
posted @ 2016-04-15 23:06  NewDolphin  阅读(196)  评论(0编辑  收藏  举报