前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抽象类和接口

抽象类和接口

作者头像
帅飞
发布2019-01-22 17:26:21
9892
发布2019-01-22 17:26:21
举报
文章被收录于专栏:Java知其所以然Java知其所以然

抽象方法

只声明了方法,同时使用了abstract修饰,没有方法体!必须要子类来重写!

抽象类

包含抽象方法的类,必须设计成抽象类!

抽象类的使用要点

  • 通过抽象类,可以避免子类设计的随意性。
  • 有抽象方法的类只能定义能抽象类
  • 抽象类不能实例化,及不能用new来实例化抽象类。
  • 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
  • 抽象类只能用来继承。
  • 抽象方法必须被子类实现。

为什么需要接口 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。

抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。

从接口的实现者角度看,接口定义了可以向外部提供的服务。

从接口的调用者角度看,接口定义了实现者能提供那些服务。

接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的系统之间模块之间的接口定义好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。大家在工作以后,做系统时往往就是使用“面向接口”的思想来设计系统。

如何定义接口?

格式:

[访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {

常量定义

方法定义

}

访问修饰符:只能是public或默认。

接口名:和类名采用相同命名机制

extends:接口可以多继承

常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。

方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract. 接口的本质是什么

接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。

接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。

OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。 接口使用要点

1. 子类通过implements来实现接口中的规范

2. 接口不能创建实例,但是可用于声明引用变量类型。

3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。

4. 接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。

5. 常量必然是:public static final。 我们不加这些修饰符,也是这样。

6. 方法必然是:public abstrac。 我们不加这些修饰符,也是这样。

7. 接口完全支持多继承。和类的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。 总结普通类:只有具体实现抽象类:具体实现和规范(抽象方法) 都有!接口:只有规范!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java知其所以然 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抽象方法
  • 抽象类
  • 抽象类的使用要点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档