Java匿名内部类
来源:互联网 发布:淘宝忘记密码怎么办 编辑:程序博客网 时间:2024/06/01 07:22
匿名内部类
要讲匿名内部类首先要了解什么是内部类,内部类简单来说就是在某个类的内部又定义了一个类,没有名字的内部类就叫匿名内部类。匿名内部类因为没有名字,所以只能使用一次,主要用来简化代码,使用匿名内部类的一个前提条件是:必须继承一个父类或者实现一个接口。
匿名内部类的实现格式
格式一:
new 类A(){ 方法体}此时产生的是类A的子类对象,如果类A是只含有带参数构造方法的类,在括号里必须带上这些参数
格式二:
new 接口A(){ 方法体}此时产生的是接口A的实现对象
不使用匿名内部类实现抽象方法:
abstract class Fruit { public abstract void eat();} class Apple extends Fruit { public void eat() { System.out.println("can eat"); }} public class Demo { public static void main(String[] args) { Fruit f = new Apple(); f.eat(); }}可以看出,Apple类继承了抽象类Fruit,然后产生Apple的一个实例,将其向上转型为Fruit的引用,但是此时Apple类只使用一次,独立编写一个类比较麻烦。这时候就可以使用匿名内部类。
使用匿名内部类实现抽象方法
abstract class Fruit { public abstract void eat();} public class Demo { public static void main(String[] args) { Fruit f = new Fruit() { public void eat() { System.out.println("can eat"); } }; f.eat(); }}使用匿名内部类将抽象类Fruit的方法在大括号中实现,就可以省略一个类的书写。
在接口使用匿名内部类
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(); }}在接口上也可以使用匿名内部类,从上面几个例子可以看出,只要一个类是抽象的或是一个接口,那么其子类的方法都可以使用匿名内部类来实现,最常见的是在多线程的实现上,因为要实现多线程必须继承Tread类或继承Runnable接口。
使用匿名内部类注意事项:
1、匿名内部类不能有构造方法,但是如果这个匿名内部类继承了一个只含有带参数构造方法的父类,在创建它的对象的时候,在括号中必须带上这些参数;
2、匿名内部类不能定义任何静态成员和方法;
3、匿名内部类不能被public、protect、private、static修饰;
4、只能创建匿名内部类的一个实例。
匿名内部类的使用条件:
1、只用到类的一个实例;
2、类在定义后马上用到;
3、类非常小。
阅读全文
0 0
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- Java匿名内部类
- JAVA匿名内部类
- java匿名内部类
- java匿名内部类
- java匿名内部类
- JAVA 匿名内部类
- JAVA匿名内部类
- java匿名内部类
- java匿名内部类
- Django登录权限的认证
- android开发中selinux的影响
- 实战hadoop海量数据处理系列05 : 实现点击流日志的数据清洗模块
- java抽象类、接口特性
- 公共数据库介绍~OECD经合组织数据库
- Java匿名内部类
- 5. Longest Palindromic Substring
- 【Leetcode】 66. Plus One
- 判断两个IP是否属于同一子网(没有判断掩码或ip是否合法,测试通过牛客)
- JavaScript 中 String 的常用函数
- MySQL(二)
- 交叉验证与网格搜索
- Eclipse之如何快速查看抽象函数实现
- Fire Game