抽象类和接口的区别

抽象类:使用abstract修饰的类

抽象方法:没有方法体并且使用abstract修饰符修饰的方法。  必须放在抽象类中。

抽象类不一定包含抽象方法。

只有方法的定义和方法的实现交给继承他的子类去完成。

继承自抽象类的子类,必须实现抽象类中的所有!抽象方法。

优点:易于扩充新的类。抽象方法必须定义在抽象类或接口中。

有抽象方法必是抽象类,抽象类中的方法不一定是抽象方法

使用abstract修饰的类,不能创建实例即new;

普通类有的成员(方法字段构造器)抽象类也有;

接口

修饰符只能是默认的或public

interface      implements

实现类的方法的访问权限必须大于等于接口的方法声明的访问权限

接口里的方法都是抽象方法字段(数据)是全局静态常量即具有public static final属性(一般不写)

如果实现接口的类不是抽象类,他必须实现接口的所有方法。

被实现的接口可以有多个。(与类的继承的不同)

接口之间也可以有继承关系,子接口拥有父接口的方法,自己还可以定义方法

接口也可实现多态

抽象类和接口的比较:

不同点:①抽象类是单继承,接口是多实现。②抽象类有非抽象方法,接口全是抽象方法。③抽象类的方法的修饰符4中都有,接口的方法都是public。④抽象类有构造方法。

相同点:都不能实例化,都可以实现多态

你可能感兴趣的:(抽象类和接口的区别)