匿名内部类经常与接口搭配使用,即没有名字的内部类,更多关注实现,而不关注类名。
其实是为了让程序员偷懒,不需要重新再建新文件而出现的一种方法。。。
匿名内部类有2种实现接口的方法:
package telhone;
public class telihone implements Ipalygame { // 普通类继承接口Ipalygame
public void call() {
} // abstract修饰符
public void Message() {
} // abstract修饰符
@Override
public void game() {
// TODO Auto-generated method stub
System.out.println("手机有了玩游戏的功能");
}
}
package telhone;
public abstract interface Ipalygame { // 接口,属于抽象类
public abstract void game(); // 抽象方法
}
package telhone;
public class run {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ipalygame tel1 = new SmartPhone(); // 引用接口创建 SmartPhone类 的对象tel1
tel1.game(); // tel1,调用SmartPhone()中的game方法。
Ipalygame tel2 = new Psp(); // 引用接口Ipalygame创建 SmartPhone类 的对象tel2
tel2.game(); // tel1,调用Psp()中的game方法。
Ipalygame tel3 = new Ipalygame() { //第一种方法引用接口new一个接口类,在接口类中实现抽象方法,再使用接口类调用方法。
@Override
public void game() {
// TODO Auto-generated method stub
System.out.println("匿名内部类1");
}
};
tel3.game();
new Ipalygame() { //第二种方法直接new一个接口类,在接口类中实现抽象方法,然后直接.调用方法。
@Override
public void game() {
// TODO Auto-generated method stub
System.out.println("匿名内部类");
}
}.game();
}
}
package telhone;
public class Psp implements Ipalygame {
@Override
public void game() {
// TODO Auto-generated method stub
System.out.println("PSP有了玩游戏的功能");
}
}
运行结果:
智能手机有了玩游戏的功能
PSP有了玩游戏的功能
匿名内部类1
匿名内部类