加载中...
第9章 接口
发表于:2021-06-12 | 分类: 《Java编程思想》读书笔记
字数统计: 655 | 阅读时长: 2分钟 | 阅读量:

9.1 抽象类和抽象方法

含有抽象方法的类叫做抽象类
abstract class name{...}

抽象方法的特征

  • 抽象方法不允许有方法体,只能以分号“;”结尾 
  • 抽象方法只能声明在抽象类中
  • 抽象类中可以包含0个或多个抽象方法。
  • 抽象方法必须被子类实现 
  • 如果子类不能实现父类中的抽象方法,那么子类也必须是抽象类

什么情况下使用抽象方法和抽象类

父类的名称比较抽象,创建对象无意义

9.2 接口

比抽象类更抽象。
interface A{...}
class B implements A{...}
接口中的变量隐式的指定为static和final,没有方法体 。

抽象类和接口的区别:

  • 抽象类只能单继承,接口能多实现 。
  • 抽象类是一个类,可以被任意权限修饰符修饰,静态和非静态属性,final和非final属性,可以有抽象方法和非抽象方法
  • 接口只能被public,final修饰,只能有静态方法,即使没有显示的声明,而且是不可修改的;
  • 抽象类是对类的抽象,接口是对行为的抽象。
  • 设计抽象类是自下而上的过程,我子类需要,所以我定义抽象类;而设计接口是自上而下的过程,我接口规范某一行为,我某类需要这个行为,我实现某接口;

核心区别:
调用者使用动机不同,实现接口是为了使用他规范的某一个行为;
继承抽象类是为了使用这个类属性和行为.

再简单点说:
我们知道抽象类是从子类中发现公共部分,然后泛化成抽象类,子类继承该父类即可,但是接口不同。实现它的子类可以不存在任何关系,共同之处。例如猫、狗可以抽象成一个动物类抽象类,具备叫的方法。鸟、飞机可以实现飞Fly接口,具备飞的行为,这里我们总不能将鸟、飞机共用一个父类吧!所以说抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在”is-a” 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 仅仅是实现了接口定义的规则而已。

上一篇:
第10章 内部类
下一篇:
第8章 多态
本文目录
本文目录