标签:
内部类
定义在类内部、方法内部或局部代码块内部的类
(1)非静态内部类
class A {
class Inner {
}
}
A a = new A();
A.Inner inner = a.new Inner();
(2)静态内部类
class A {
static class Inner {
}
}
A.Inner inner = new A.Inner();
(3)局部内部类
*) 局部定义的类型,只能在局部使用
*) 局部内部类的对象,可以转成父类型向外传递
class A {
Weapon a() {
class Inner implements Weapon {
}
Inner i = new Inner();
return i;
}
}
(4)匿名内部类:这在写代码中经常用到的一种类,一般是指不声明对象名称,直接创建对象并重写方法一种做法。
关于匿名内部类可以先看一个例子。
先定义一个接口:
public interface Animal { void eat(); }
然后看定义一个测试类,分别使用类局部内部类和匿名内部类。可以通过这个小例子看匿名内部类的使用方法。
public class Test1 { public static void main(String[] args) { Animal a1 = test1(); a1.eat(); Animal a2 = test2("老虎"); a2.eat(); } private static Animal test1() { class Tiger implements Animal{ //实现接口 @Override public void eat() { System.out.println("是一种肉食动物!"); } } Tiger tiger = new Tiger(); return tiger; } private static Animal test2(String name) { //Animal Tiger = new Animal() {//匿名内部类实现接口 //@Override //public void eat() { //System.out.println(name+"是一种肉食动物"); //} //}; //return Tiger; return new Animal() {//匿名内部类更直接的写法 @Override public void eat() { System.out.println(name+"是一种肉食动物"); } }; } }
标签:
原文地址:http://www.cnblogs.com/fazheng/p/5079228.html