定义
抽象类:声明方法的存在而不去实现它的类叫做抽象类(abstract
class),里面可以有抽象方法和非抽象方法,另外,抽象类是不能被实例化的(抽象类不能创建对象),因为抽象类中有可能会有抽象方法,而抽象方法是没有方法体的,不可以被调用,如果想调用抽象类里面的方法,则需要创建一个子类来继承抽象类,在子类中来实现抽象类中的抽象方法。
接口:接口里面的方法全部都是抽象方法,它是抽象类的变体;由于接口中都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法,此时需要定义一个类通过implements关键字来实现接口中所有的方法;
区别
- 抽象类中可以有非抽象方法,接口中全都是抽象方法;
- 一个接口可以继承多个接口,一个类只能继承一个抽象类,还可以同时实现接口;
- 抽象是继承,接口是实现;
抽象类可以有具体的方法和属性,接口有抽象方法和不可变常量;
当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口;