匿名内部类
概述
匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)
前提
需要存在一个接口或类
理解:匿名内部类是将(继承\实现)(方法重写)(创建对象)三个步骤,放在了一步进行
public class Test5Innerclass {
/*
1.创建实现类,通过implements关键字去实现接口
2.重写方法
3.创建实现类对象
4.调用重写后的方法。
匿名内部类:
前提:需要存在一个类\接口
格式:
new 类名 \ 接口名 () {
重写方法
}
*/
public static void main(String[] args) {
InterImpl ii = new InterImpl();
ii.show();
// 匿名内部类的理解:将继承\实现,方法重写,创建对象,放在了一步进行
// 解释:实现了Inter接口的,一个实现类对象
new Inter(){
@Override
public void show() {
System.out.println("我是匿名内部类中的show方法");
}
}.show();
// 接口中存在多个方法
Inter2 it = new Inter2() {
@Override
public void show1() {
System.out.println("我是show1");
}
@Override
public void show2() {
System.out.println("我是show2");
}
};
it.show1();
it.show2();
}
}
interface Inter{
void show();
}
interface Inter2{
void show1();
void show2();
}
class InterImpl implements Inter{
@Override
public void show() {
System.out.println("InterImpl 重写的show方法");
}
}
匿名内部类在开发中的使用
当方法的形式参数是接口或者抽象类时
可以将匿名内部类作为实际参数进行传播
public class Test6Swimming {
public static void main(String[] args) {
goSwimming(new Swimming() {
@Override
public void swim() {
System.out.println("游泳去吗");
}
});
}
/*使用接口的方法*/
public static void goSwimming(Swimming swimming) {
/*
Swimming swimming = new Swimming() {
@Override
public void swim() {
System.out.println("游泳去吗");
}
};
*/
swimming.swim();
}
}
/*
游泳接口
*/
interface Swimming{
void swim();
}