【Java学习笔记(四-1)】关于类、对象、抽象类和接口之间关系的梳理

接口与抽象类相比,最大的区别在于子类上,接口的子类可以同时实现多个接口

抽象类与接口对比

共同点

  • 都是抽象类型
  • 都可以实现方法(Java8以后)
  • 都可以不需要实现类或者继承者去实现所有方法(Java8以后)

不同点

  • 抽象类不可以多重继承,接口可以(多重类型继承,多重行为继承)
  • 抽象类和接口所反映出的设计理念不同。其实抽象类表现的是“is-a”关系,接口表示的是“like-a”关系
  • 接口中定义的变量默认是public static final型,必须给其初值,所以实现类中不肯呢个重新定义,也不能改变其值;抽象类中的变量默认是friendly型,其值可以在子类中重新定义,也可以重新赋值;

总体来说,抽象类和接口在很大程度上都是可以互相替换使用的,但就是由于抽象类本身具备单继承局限,所以当抽象类和接口全部都可以使用的时候优先考虑使用接口,并且在Java8 中接口可以设置默认方法,在一定程度上避免代码重复,利于后期的维护;

继承抽象类和继承普通类最大的区别

  • 在普通类中所有的方法都是由方法体的,那么如果说有一些方法希望由子类来实现的时候,子类即使不实现也不会出现错误;
  • 如果使用抽象类的话,那么抽象类之中的抽象方法在语法上就必须要求子类进行实现,这样就可以强制子类进行一些固定操作;

接口、抽象类、类、对象的关系

  • 基本类:也就是一般的类,是对象的模板,是属性和方法的集合。可以继承其他类、抽象类、实现接口
  • 抽象类:有抽象方法的类。抽象类可以有一个或多个抽象方法,它是基本类和接口类的国度
  • 接口:接口中的所有除默认方法外都会抽象方法,抽象方法本身只定义不实现,用来制定标准
  • 具体逻辑关系举例如下

人已赞赏
Java编程语言

【Java学习笔记(三-3)】final修饰符

2020-4-15 18:22:40

Java编程语言

【Java学习笔记(五-1)】对象与垃圾回收

2020-4-15 22:33:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索