匿名内部类脑补

原创 2017年01月03日 16:30:44

一、概念



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

它的具体实现过程如下

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来使这个应用不可改变。




版权声明:本文为博主原创文章,未经博主允许不得转载。

java基础四种匿名内部类

  • 2017年08月09日 23:08
  • 42.78MB
  • 下载

匿名内部类代码

  • 2012年12月06日 10:57
  • 12KB
  • 下载

匿名内部类是否可以由静态的内容

在使用匿名内部类时,要记住以下几个原则:  · 匿名内部类不能有构造方法。  (因为匿名内部类是没有类名的)  · 匿名内部类不能定义任何静态成员、方法和类。 理由:匿名内部类是晚于...

Java 匿名内部类

  • 2017年08月02日 22:58
  • 6KB
  • 下载

java中的匿名内部类总结

  • 2013年10月09日 21:57
  • 30KB
  • 下载

java匿名内部类使用外部变量时,外部变量必须是final,为什么?

转自:http://blog.csdn.net/u011617742/article/details/516135191,Java中的匿名内部类是如何实现的? 先定义一个接口: public in...

java 匿名内部类的使用规范

  • 2010年06月21日 15:01
  • 59KB
  • 下载

关于匿名内部类的资料

  • 2009年07月19日 03:27
  • 34KB
  • 下载

Java的匿名内部类与Lambda表达式

匿名内部类匿名内部类适合只需要使用一次的类,创建匿名内部类时会立即创建一个该类的实例。定义匿名内部类new 接口() | 父类构造器(实参列表) {} 匿名内部类必须继承一个父类,或实现一个接口。1)...

JAVA_匿名内部类

  • 2012年08月16日 12:56
  • 64KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:匿名内部类脑补
举报原因:
原因补充:

(最多只允许输入30个字)