java 中的接口实现

接口

接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中所有方法都没有方法体。

我们知道,抽象类被继承之后,需要我们实现其中所有的抽象方法,也就是保证以相同的方法名称、参数列表和返回值类型创建出非抽象方法,当然也是可以继续是抽象方法的。

我们为什么需要接口呢,我们在写完一个抽象类之后,我们继承这个抽象类,我么是需要将里面的所有方法重写的,但是有的类继承这个抽象类,这个抽象类里面的某些方法是用不到的,如果用不到的方法我们也将其重写的话,就会产生很多没有用的代码。

所以我们就要用到接口,我们可以将某个方法封装都一个接口里面,然后我们将部分类要用到的方法封装到这个接口中,这样在我们要用到这个方法的时候就实现这个接口。

例如:将图形对象的绘图方法剥离出来,作为 Paintable 可绘制接口中的抽象方法。创建四边形行类作为平行四边形类和正方形类的父类,同时让这两个子类实现 Paintable 接口。创建圆形类是想 Paintable 接口,但不能继承四边形类。

public interface Paintable {
    /**
     * 绘制抽象方法
     */
    public void draw();
}
public class Quadrangle {
    public void doAnything() {
        System.out.println("四边形提供的方法");
    }
}
public class Parallelogram extends Quadrangle implements Paintable {
    /**
     * 由于该类实现了接口,所以需要覆盖 draw() 方法
     */
    @Override
    public void draw() {
        System.out.println("绘制平行四边形");
    }
}
public class Square extends Quadrangle implements Paintable {
    @Override
    public void draw() {
        System.out.println("绘制正方形");
    }
}
public class Circular implements Paintable {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}
public class Test {

    public static void main(String[] args) {
        Square s = new Square();
        s.draw();
        s.doAnything();
        Parallelogram p = new Parallelogram();
        p.draw();
        p.doAnything();
        Circular c = new Circular();
        c.draw();
    }

}

运行结果:

绘制正方形
四边形提供的方法
绘制平行四边形
四边形提供的方法
绘制圆形

由此我们看到,圆形类是不需要用到 doAnything() 方法的,但是他同平行四边形和正方形一样需要 draw() 方法,所以我们也可以将 draw() 方法封装到接口中。这样就绘制圆形的时候只需要实现接口就好了,也不会造成代码的冗余。

1.在接口中,方法必须被定义为 public 或者 abstract 形式,其他修饰符权限不被 java 编译器
认可。或则说,即使不将该方法声明为 public 形式,它也是 public 形式。
2.在接口中定义的任何字段都是自动是 static 和 final 的。

java 中不允许出现多重继承,但是接口就可以实现多重继承。一个类可以同时继承多个接口,因此可以将所有需要继承的接口放置在 implements 关键字后,并使用逗号隔开,当然一个接口也可以继承另一个接口。

posted on 2022-02-25 10:01  一颗蛋50斤  阅读(358)  评论(0)    收藏  举报

导航