抽象类和接口的区别

总结

关键字不一样 抽象类是abstract 接口是interface

子类使用 抽象类使用extends ,接口使用implements

修饰符不同

接口的方法默认是public abstract 属性默认是public static final

抽象类的方法默认是public abstract 属性是任意的

区别:定义接口的关键字是:interface而定义抽象类的关键字是:abstract。

接口中成员不能有私有,抽象类可以。

接口中定义的成员,是 public static final类型,抽象类没有。

接口中的不能有普通方法,抽象类中可以。

相同:

两个都不new

区别 抽象类 接口
关键字 abstract class interface
组成 属性、常量、构造、普通方法 全局常量、抽象方法
权限 可以使用各种权限 只能够是public访问权限
子类使用 使用extends继承抽象类 使用implements实现接口
关系 抽象类可以实现多个接口 接口不允许继承抽象类,但是一个接口可以继承多个父接口
使用 都需要定义有子类,子类一定要覆写所有抽象方法,并且依赖子类对象的向上造型实现抽象类或接口的对象实例化操作
限制 一个子类只能继承一个抽象类 一个子类可以实现多个接口

实际上在开发之中,发现如果抛开单继承的局限不看,使用抽象类和接口都是一样的,但是正因为存在有单继承的局限,所以当抽象类和接口都可以使用时,优先使用接口。

抽象类时对类抽象,而接口是对行为的抽象

mark

抽象类可以定义一些公共的属性

抽象类可以不覆写接口的全部的抽象方法

接口示例:

1
2
3
4
5
6
7
public interface CartMapper{

public abstract voidadd(Cartcart);

public abstract List<Cart>getCartList(Integeruid);

}

抽象类示例:

1
2
3
public abstract class Animal {  
public abstract void cry();
}

接口的方法默认是public abstract

属性默认是public static final

参数 抽象类 接口
默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现
实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器 抽象类可以有构造器 接口不能有构造器
与正常Java类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型
访问修饰符 抽象方法可以有publicprotecteddefault这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法 抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码 如果你往接口中添加方法,那么你必须改变实现该接口的类。
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 高行行
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信