接口
public interface InterfaceA {
public void method();
}
实现类
public class InterfaceAImpl implements InterfaceA {
@Override
public void method() {
System.out.println("实现类覆盖重写了接口的method方法");
}
}
父类
public class Fu {
public void method(){
System.out.println("父类方法");
}
}
子类
public class Zi extends Fu {
@Override
public void method() {
System.out.println("子类重写了父类的method方法");
}
}
使用
public class DemoMain {
public static void main(String[] args) {
// 接口
InterfaceA obj = new InterfaceAImpl(); // 实现类的对象 多态写法
// InterfaceAImpl objA = new InterfaceAImpl(); // 实现类的对象
obj.method();
// 省略实现类的定义 用匿名内部类实现重写 因为只使用一次
InterfaceA objB = new InterfaceA() {
@Override
public void method() {
System.out.println("匿名内部类实现了接口中method方法的重写");
}
};
objB.method();
// 同时使用匿名对象和匿名内部类实现
new InterfaceA(){
@Override
public void method() {
System.out.println("同时使用匿名对象和匿名内部类实现接口中method方法的重写");
}
}.method();
System.out.println("===============");
/*
* 类
*/
Fu objC = new Zi(); // 使用多态
objC.method(); // 子类的方法
// 使用匿名内部类直接重写父类的方法
Fu objD = new Fu(){
@Override
public void method() {
System.out.println("使用匿名内部类重写了父类的method方法");
}
};
objD.method();
// 同时使用匿名内部类和匿名对象
new Fu(){
@Override
public void method() {
System.out.println("使用匿名方法和匿名内部类重写了父类的method方法");
}
}.method();
}
}