匿名内部类
来源:互联网 发布:设置数据选择 编辑:程序博客网 时间:2024/06/06 14:22
匿名类是一种特殊的内部类,它是在一个表达式内部包含一个完整的类定义。所谓的匿名就是该类连名字都没有,匿名内部类不可以有构造器,因为匿名内部类是要扩展或实现父类或接口。匿名内部类可以继承其他类,因为是类就是继承自Object类的。
匿名内部类实现接口指的是类本身定义的时候实现接口还是直接定义匿名内部类的时候实现接口,前者肯定是可以的,后者应该是不行的,光从语法上都不能实现,如:
class B { } class C{public void z(){ Thread t=new Thread(new A(){//这里定义了一个无名内部类,要实现接口,语法上都是不能实现的 public void run() { } }); } class A extends B implements Runnable,Serializable,Cloneable { //如果在new 以后写继承其他类或是实现接口都是错误的public void run(){ } } } public class A { int i = 1; public A() { Thread thread = new Thread() {//匿名内部类 public void run() { for(;;) { A.this.run();//用到了外部类的 run 函数,用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run try { sleep(1000); } catch(InterruptedException ie) { } }//for }//run };//Thread thread.start(); } //A() public void run() { System.out.println("i = " + i); i++; } public static void main(String[] args) throws Exception { new A(); }}
本地内部类与匿名内部类的区别在于本地内部类有构造函数,而匿名内部类只能实例初始化。
匿名内部类:通常用在Java的事件处理上
package inner;
import java.applet.*;
import java.awt.event.*;
public class AnonymousInnerClassDemo extends Applet{
public void init() {
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
showStatus("Mouse Pressed!");// 这个匿名内部类可以访问外部类的方法showStatus. }
});
}
public void showStatus(String str){
System.out.println(str); }
}
在上面的例子中, 方法addMouseListener接受一个对象型的参数表达式, 于是, 在参数里, 我们定义了一个匿名内部类,这个类是一个MouseAdapter类型的类, 同时在这个类中定义了一个继承的方法mousePressed, 整个类做为一个参数.这个类没有名称, 但是当执行这个表达式时它被自动实例化.
0 0
- 内部类、匿名内部类
- 内部类、匿名内部类
- 内部类,匿名内部类
- 内部类(匿名内部类)
- 内部类 ---匿名内部类
- 内部类,匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类,内部类,匿名内部类
- 匿名内部类,回调...
- 关于匿名内部类
- 匿名内部类
- JAVA匿名内部类
- 返回匿名内部类
- java 匿名内部类
- 匿名类内部类
- JAVA匿名内部类
- linux 环境下c,c++编程(三):c++的编译文件
- Android应用资源系列之属性(Attribute)资源
- 线程池java实现方式
- rrdtool 绘图
- myeclipse 编码设置
- 匿名内部类
- postgres学习点滴
- Bat脚本处理ftp超强案例解说
- cocos2dx之CCSpeed
- sql
- 进制转换(还是链表)
- HPUX下修改设备名称
- 课程管理系统 java
- js 操作文件和文件夹