匿名累不累(匿名内部类)
正常情况下要调用一个接口中的方法需要这样:
public class TestClass {
public static void main(String
[] args
) {
TestInterfaceImpl testInterface
= new TestInterfaceImpl();
testInterface
.show();
}
}
interface TestInterface{
void show();
}
class TestInterfaceImpl implements TestInterface{
@Override
public void show() {
System
.out
.println("测试,重写的show方法");
}
}
1.创建实现类对象去实现接口
2.重写方法
3.创建实现类对象
4.调用重写的方法
使用内部类的方式
public class TestClass1 {
public static void main(String
[] args
) {
new TestInterface1() {
@Override
public void show() {
System
.out
.println("重写的show方法");
}
}.show();
}
}
interface TestInterface1{
void show();
}
匿名内部类的理解:
将继承,重写,创建对象,放在一步执行
匿名内部类的前提 : 需要存在一个接口或者类
接口中有多个方法
public class TestClass1 {
public static void main(String
[] args
) {
TestInterface1 testInterface1
=new TestInterface1() {
@Override
public void show() {
System
.out
.println("重写的show方法");
}
@Override
public void show1() {
System
.out
.println("重写的show1方法");
}
};
testInterface1
.show();
testInterface1
.show1();
}
}
interface TestInterface1{
void show();
void show1();
}
以多态的方式进行接收,然后在调用不同的方法.
匿名内部类在开发中的使用场景
public interface Swimming {
void swim();
}
public class TestSwimming {
public static void main(String
[] args
) {
goSwimming(new Swimming() {
@Override
public void swim() {
System
.out
.println("游泳");
}
});
}
public static void goSwimming(Swimming swimming
){
swimming
.swim();
}
}
当方法的形式参数是接口或者抽象类是可以将匿名内部类作为实际参数进行传递