匿名内部类脑补

标签: 匿名内部类
78人阅读 评论(0) 收藏 举报
分类:

一、概念



匿名内部类,就是没有名字的内部类结构,因为其没有类名,所以也没有构造函数,初始化的时候使用的是构造块

它的具体实现过程如下

new 父类构造器(参数列表)| 实现接口()    
    {    
     //匿名内部类的类体部分    
    }  



二、程序解析


(1)继承抽象类的的实现方式

abstract class Person {
    public abstract 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();
    }
}

运行结果:eat something


(2)继承接口的实现方式

水电费

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();
    }
}
运行结果:eat something

(3)在线程上的应用

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();
    }
}
运行结果:1 2 3 4 5


三、注意事项


(1)使用时必须继承一个类或者实现一个接口,只能是一个。

(2)没有类名,不能够定义构造函数

(3)不能存在任何的静态成员变量和静态方法

(4)为局部内部类,局部内部类的限制对匿名同样有效

(5)当方法的形参要在匿名内部类中使用时,该形参必须为final

为什么要用final:因为虽然外部的参数看似传进来了,但是实际上内部类中调用的是自己的属性,而不是外部方法传递的参数

我们使用final来使这个应用不可改变。




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:112049次
    • 积分:3480
    • 等级:
    • 排名:第9501名
    • 原创:221篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条
    博客专栏
    JAVA_SE

    文章:24篇

    阅读:20901