美文网首页
接口与抽象类的区别

接口与抽象类的区别

作者: sunpy | 来源:发表于2018-08-05 14:33 被阅读44次

什么是接口

       接口本身是一种对行为的一种抽象,实现接口的类将按照接口的规范约束行为。例如:人可以跑,狗,猫都可以跑。人,狗,猫多种动物,只要可以跑就可以实现跑这个行为的接口。
       我们开发中经常说给别人提供接口,而不是说给别人提供实现类。我们将属性私有,通过接口中的行为来操作。这样封装了内部的实现。
       当我们对外提供接口,而不是直接暴露实现类,这样调用的类就实现了与提供类之间的解耦(外观模式),在mvc模式中用的特多。
       当我们定义了一个接口,它只是一种行为的抽象,我们也可以提供多种实现,这样保证不用每次因为实现要改变而不停的改变实现类(策略模式)。

什么是抽象类

       抽象类本身是一种对事物的抽象。将多个事物抽象出一种共同特征的事物。例如:狗是动物,猫是动物,人也是动物。动物就是抽象类。猫狗人就是继承动物的子类。
       抽象类中既可以定义抽象方法,也可以定义普通方法。子类继承抽象类必须重写抽象方法。

public abstract class Animal {

    public abstract void run();
    
    public void fly() {
        System.out.println("Animal fly");
    }
}

public class Dog extends Animal{

    @Override
    public void run() {
        
    }
}

区别

① 一个类可以实现多个接口,只能有一个继承抽象类(java单继承多实现)。
② 接口只能定义抽象方法,但是抽象类中可以定义抽象方法也可以定义普通方法。

相关文章

网友评论

      本文标题:接口与抽象类的区别

      本文链接:https://www.haomeiwen.com/subject/vejyvftx.html