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

Java--多态性之抽象类和接口

作者头像
SuperHeroes
发布2018-05-22 16:13:24
5120
发布2018-05-22 16:13:24
举报
文章被收录于专栏:云霄雨霁云霄雨霁

上一篇:多态性之上溯造型和下溯造型

抽象类(abstract)可以含有一个或多个抽象方法(只有方法的定义而没有方法的实现),也可以不含有抽象方法。如果想从一个抽象类继承,而且新类要实例化对象,则必须实现抽象类的所有抽象方法。否则,新类也是抽象类。

接口(interface)可以理解为纯抽象类。它完全禁止方法的实现。接口中的数据成员(字段)默认为static和final, 成员函数(方法)默认为public。所以在实现一个接口时,来自接口的方法必须也是public。

实现按一个接口要使用 implements(实现)关键字,其他操作和继承非常类似。

Java中的“多重继承”可以靠接口实现。因为Java中类只能单一继承而接口可以多继承。

如果一个新类同时要继承一个基础类和多个接口,基础类必须写在前面

class Student extends People implements Eat, Sleep{
    //...
}

接口扩展extends关键字:

interface Monster {
 void menace();
}
interface DangerousMonster extends Monster {
 void destroy();
}

使用接口的原因:

  • 能上溯造型至多个基础类
  • 防止其他人制作这个类的对象(和抽象类相同)

接口 or 抽象类?

若使用接口,我们可以同时获得抽象类以及接口的好处。所以假如想创建的基础类没有任何方法定义或者成员变量,那么就选择接口。事实上,如果事先知道某种东西会成为基础类,那么第 一个选择就是把它变成一个接口。只有在必须使用方法定义或者成员变量的时候,才应考虑采用抽象类。

接口的一个应用--常数分组

因为接口的字段都默认为final和static,所以很适合常数分组。例如:

public interface Months {
 int
 JANUARY = 1, FEBRUARY = 2, MARCH = 3,
 APRIL = 4, MAY = 5, JUNE = 6, JULY = 7,
 AUGUST = 8, SEPTEMBER = 9, OCTOBER = 10,
 NOVEMBER = 11, DECEMBER = 12;
}

与C++的enum相似但不像enum那样拥有额外的类型安全性。不过比起直接将数字硬编码到程序中,这样实现起来的代码可读性更强。

下一篇:多态性之内部类和匿名类

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档