何时使用接口,何时使用抽象类

什么是接口

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。

接口的特点

  • 定义接口的关键字是interface
  • 接口不能实例化,也没有构造函数
  • 接口的实现类必须实现接口的所有方法,除非这个实现类是抽象类
  • 一个接口可以继承多个接口,不过无法继承类
  • 接口的方法不能有具体实现

什么是抽象类

Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。

抽象类的特点

  • 抽象类无法实例化
  • 定义抽象类的修饰符必须是abstract
  • 子类继承抽象类必须实现所有的抽象方法,除非子类也是抽象类
  • 抽象类不一定会有抽象方法,但是有抽象方法的一定是抽象类
  • 构造方法和类方法不能被定义成抽象方法

何时使用接口,何时使用抽象类

对比上述两者的特点,可以发现,使用抽象类,在添加了新方法后而其子类却不一定要实现这个方法。而接口不同,只要有新的方法,那么它所有的实现类都要做相应方法的重写实现,改动次数一旦多了,工程量就会很大,所以这时推荐使用抽象类。同时要知道java是不支持多继承的,如果还是想要用多继承这骚操作的话,那么就用接口的多继承。

接口是一组规则的集合,使用接口可以强制规定其实现类必须要实现这些规则,而每个实现类的实现方式却又可以不同,这是多态的表现。抽象类更多的是用于代码的复用,当然不用抽象类也是可以把公共代码抽成出来变成一个类来复用代码,但是一般这种复用类是无需实例化的,所以使用抽象类显得合情合理。

发布了136 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/103997404
今日推荐