美文网首页
Java面向对象:抽象和接口

Java面向对象:抽象和接口

作者: 我的袜子都是洞 | 来源:发表于2018-12-21 22:22 被阅读63次

抽象

仅声明方法而不实现当中的逻辑,叫抽象方法,如果一个类中包括了抽象方法,则该类称为抽象类。
抽象类不能用来生成对象,它只能被子类继承,并于继承后完成未完成的抽象方法定义。

功能:

  1. 可以实现动态多态性
  2. 可以要求子类细化方法,让子类去具体实现

形式:

  • 抽象类:用abstract关键字来修饰一个类
  • 抽象方法:用abstract关键字修饰的一个方法

规则:

  1. 不能实例化,可以有属性、构造、方法,可以继承、派生,可以定义抽象类的引用变量
  2. 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
  3. 抽象类可以派生可实例化子类,在子类中重写所有的抽象方法
  4. 抽象类可以派生抽象类,可实例化类也可以派生抽象类
  5. 抽象类派生子类后,子类不重写抽象方法,子类应该也是抽象类

接口

提供给其他类调用方法的方法说明,其他类要遵从从接口描述的统一格式进行定义,接口就是要说明一组类能做什么,而不关心如何做

功能:

  • 接口实现的动态多态性
  • 接口让规范和实现分离,让系统的各组件之间通过接口耦合,是一种松耦合的设计

形式:
定义接口:


定义接口

实现接口:


实现接口

规则:

  • 接口,不是类
  • 接口没有构造,没有普通方法,没有普通属性
  • 接口中的变量,自动为常量,通过接口名直接访问,并且不可修改

总结:

  1. 接口可以当作抽象的父类使用,为了实现动态多态
  2. 一个类可以实现多个接口,在类中要实现所有接口定义的方法
  3. 接口可以多继承,但是不推荐这么做

抽象类和接口的比较

类的继承:

  • 父类中的方法若有功能,子类不用重写,父类功能一旦修改所有的子类都会发生修改,方便维护(当需求功能发生改变时,只需要修改一个父类即可)。
  • 若子类重写了父类的方法,子类修改时不会影响其他类。
  • 增加了类之间的耦合性。项目应该尽量做到高内聚低耦合。

接口的继承:

  • 接口中只有规范,派生出的子类之间没有任何关联
  • 子类需要单独维护
  • 做到了高内聚低耦合

Student对象数组,每个Student对象包含学号、姓名、年龄三个private属性,可以通过get方法获取对应属性的值。通过接口的使用,让学生对象的排序修改更加方便,解决代码冗余问题。

GitHub源代码:studentsort

学生Student类代码截图:


Student Student类结构

排序接口CompareInterface :


接口代码

接口的实现类:根据学号比较类


接口的实现类

接口的实现类:根据学号比较类


接口的实现类

测试类:


测试类代码

运行结果截图:


运行结果

相关文章

  • Java面向对象:抽象和接口

    抽象 仅声明方法而不实现当中的逻辑,叫抽象方法,如果一个类中包括了抽象方法,则该类称为抽象类。抽象类不能用来生成对...

  • java抽象类和接口小记

    Java抽象类和接口小记 Java抽象类和接口实现了java的多态.多态是面向对象程序语言的核心,在项目开发过程中...

  • 第13讲 | 谈谈接口和抽象类有什么区别?

    典型回答 接口和抽象类是 Java 面向对象设计的两个基础机制。接口是对行为的抽象,它是抽象方法的集合,利用接口可...

  • Java 中接口和抽象类的 7 大区别!

    Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象、封装、继承和多态。 而本文介绍的接口和抽象...

  • java 常见面试题总结

    java 基础 问题回答会附上链接 面向对象 面向对象的基本特征 接口和抽象类的区别 object的几个方法htt...

  • Java面向对象、抽象方法和接口

    一、抽象类(Abstract) 抽象类不可以创建对象,其他和普通类一致,可以有成员,静态方法和构造方法(提供子类调...

  • Kotlin入门学习(二)

    新的篇章 面向对象 面向对象-封装 面向对象-继承 面向对象-抽象类和多态 接口 委托和代理 by关键字 委托...

  • Java 面向对象思想回答抽象类和接口的区别

    Java 面向对象思想回答抽象类和接口的区别 抽象类 含有abstract修饰符的class即为抽象类 abstr...

  • Java抽象类与接口

    对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。接口...

  • Java面向对象

    Java和iOS的面向对象大体上没有什么区别,有几点需要注意: 抽象类 接口类 多继承 重载 对象 接口 包

网友评论

      本文标题:Java面向对象:抽象和接口

      本文链接:https://www.haomeiwen.com/subject/hrhbkqtx.html