java的匿名内部类
2015-04-27 15:35
190 查看
内部类
什么是内部类?
所谓内部类,就是一个类顶一个另一个类的里面。
public
class A {
int
i=0 ;
class B{
int
j=5 ;
int funB(){
int result =
i+j;
return result;
}
}
}
那么B就是A的内部类,当经过javac编译后,会产生A.class和A$B.class两个字节码文件。
如何生成一个内部类对象
在类B中可以利用A类中的i。但是B和A不具有继承关系。这是因为类B创建的时候,类A就已经创建过。A和B在同一个包下,在B中可以访问类A中的变量。
public
class Tests {
public
static void main(String[] args) {
A.B B = new A().new B();
System.out.println(B.funB());
}
}
匿名内部类
没有名字的内部类,一般用在new一个接口的实现类。如下:
定义一个接口A:
public
interface A {
public
void dosomething();
}
定义一个类B
public
class B {
public
void fun(A a){
System.out.println("B的内部类");
a.dosomething();
}
}
在主函数里
public
class Tests {
public
static void main(String[] args) {
B B = new B();
B.fun(new A() {
//接口是不能实例化的,这里我们new的是接口的实现类,该类是匿名的一个类
@Override
public
void dosomething() {
System.out.println("new出的匿名内部类");
}
});
}
}
运行结果
在android开发中,使用匿名内部类的地方很多。比如在设置一个按钮的点击事件时,就需要用到匿名内部类。
bt_main = (Button) findViewById(R.id.bt_main);
bt_main.setOnClickListener(new OnClickListener(){
@Override
public
void onClick(View v) {
Toast.makeText(getApplicationContext(),"您点击了按钮!", 3000).show();
}
});
什么是内部类?
所谓内部类,就是一个类顶一个另一个类的里面。
public
class A {
int
i=0 ;
class B{
int
j=5 ;
int funB(){
int result =
i+j;
return result;
}
}
}
那么B就是A的内部类,当经过javac编译后,会产生A.class和A$B.class两个字节码文件。
如何生成一个内部类对象
在类B中可以利用A类中的i。但是B和A不具有继承关系。这是因为类B创建的时候,类A就已经创建过。A和B在同一个包下,在B中可以访问类A中的变量。
public
class Tests {
public
static void main(String[] args) {
A.B B = new A().new B();
System.out.println(B.funB());
}
}
匿名内部类
没有名字的内部类,一般用在new一个接口的实现类。如下:
定义一个接口A:
public
interface A {
public
void dosomething();
}
定义一个类B
public
class B {
public
void fun(A a){
System.out.println("B的内部类");
a.dosomething();
}
}
在主函数里
public
class Tests {
public
static void main(String[] args) {
B B = new B();
B.fun(new A() {
//接口是不能实例化的,这里我们new的是接口的实现类,该类是匿名的一个类
@Override
public
void dosomething() {
System.out.println("new出的匿名内部类");
}
});
}
}
运行结果
在android开发中,使用匿名内部类的地方很多。比如在设置一个按钮的点击事件时,就需要用到匿名内部类。
bt_main = (Button) findViewById(R.id.bt_main);
bt_main.setOnClickListener(new OnClickListener(){
@Override
public
void onClick(View v) {
Toast.makeText(getApplicationContext(),"您点击了按钮!", 3000).show();
}
});
相关文章推荐
- java匿名内部类
- 详解java匿名内部类
- java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨
- 关于JAVA匿名内部类的一点讨论
- JAVA基础复习十-权限修饰符、匿名内部类
- 黑马程序员--java基础--对象的多态、内部类、匿名内部类、异常处理机制
- JAVA匿名内部类的构造方法
- java 匿名内部类使用
- java-匿名内部类
- 为什么Java匿名内部类的方法中用到的局部变量都必须定义为final
- java基础之:匿名内部类应用例子一
- java 匿名内部类
- 面向对象高级特性===Java静态内部类、匿名内部类、成员式内部类和局部内部类
- Java的匿名内部类
- java 自我知识总结(十六)匿名内部类
- Java基础-内部类-为什么局部和匿名内部类只能访问局部final变量
- java之匿名内部类中的多态
- java之匿名内部类
- JAVA基础第九天学习日记_内部类、匿名内部类、异常
- 0011_20170402_【我是菜鸟】_java的匿名内部类