匿名内部类:就是没有类名字的内部类。
匿名内部类作用:简化内部类书写。
匿名内部类的前提:必须继承一个父类或者是实现一个接口。
匿名内部类的格式:
new 父类或者接口(){ 执行代码….};
内部类的写法是这样的:
public class Outer {
//内部类的写法
class Inner{
public void show(){
System.out.println("内部类的show方法");
}
}
public void print(){
new Inner().show();
}
}
匿名内部类调用show方法:
abstract class Inner{
abstract void show();
}
public class Outer {
//匿名内部类的写法
public void print(){
new Inner() {
@Override
void show() {
// TODO Auto-generated method stub
System.out.println("匿名内部类的show方法");
}
}.show();
}
}
案例:在外部类调用show1、show2方法。内部类的实现方法
class Outer{
class Inner{
public void show1(){
System.out.println("show1");
}
public void show2(){
System.out.println("show2");
}
}
public void print() {
Inner inner=new Inner();
inner.show1();
inner.show2();
}
}
使用匿名内部类实现:
interface Inner{
public void show1();
public void show2();
}
class Outer{
Inner inner=new Inner() {
@Override
public void show2() {
// TODO Auto-generated method stub
System.out.println("show2");
}
@Override
public void show1() {
// TODO Auto-generated method stub
System.out.println("show1");
}
};
public void print(){
inner.show1();
inner.show2();
}
}
注意细节:
使用匿名内部类时,如果需要调用匿名内部类的两个方法或者两个方法以上。可以使用变量指向该对象。