private Handler mHandler = new Handler() {...}是属于内部类

来源:互联网 发布:sql删除重复 编辑:程序博客网 时间:2024/06/05 18:53

java代码:private Handler mHandler = new Handler() {...}此处使用的什么语法,继承?重写?匿名类?

2014-02-27 17:43yangylhi | 浏览 2352 次
 java
Class A {......................private Handler mHandler = new Handler() {   //此处使用的什么语法啊 , 继承?重写?匿名类?    public void handleMessage(Message msg) {        switch (msg.what) {        case 1:            // 所做的操作            break;        case 2:            // 所做的操作            break;        default:            // 所做的操作        }    };  }............}
2014-02-27 18:05提问者采纳
private Handler mHandler = new Handler() { public void handleMessage(Message msg) {.....}}其中使用的正是内部类·匿名内部类不能有构造方法。·匿名内部类不能定义任何静态成员、静态方法。·匿名内部类不能是public,protected,private,static。·只能创建匿名内部类的一个实例。·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。A、继承式的匿名内部类public class Car {public void drive(){System.out.println("Driving a car!");}public static void main(String[] args) {Car car = new Car(){public void drive() {System.out.println("Driving another car!");}};car.drive();}}结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。B、接口式的匿名内部类。interface Vehicle {public void drive();}class Test{public static void main(String[] args) {Vehicle v = new Vehicle(){public void drive(){System.out.println("Driving a car!");}};v.drive();}}上面的代码很怪,好像是在实例化一个接口。事实并非如此,接口式的匿名内部类是实现了一个接口的匿名类。而且只能实现一个接口。C、参数式的匿名内部类。class Bar{void doStuff(Foo f){f.foo();}}interface Foo{void foo();}class Test{static void go(){Bar b = new Bar();b.doStuff(new Foo(){public void foo(){System.out.println("foofy");}});}}
0 0
原创粉丝点击