资讯专栏INFORMATION COLUMN

Java 接口(9)

lncwwn / 3022人阅读

摘要:接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。

1.抽象类和抽象方法

抽象类,是普通的类与接口之间的一种中庸之道.

抽象方法:仅有声明而没有方法体.

抽象类:包含抽象方法的类.如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的.

如果从一个抽象类继承,并想创建该新类的对象,那么久必须为基类中的所有抽象方法提供方法定义。如果不这样做,那么导出类便也是抽象的,且编译器将会强制用abstract关键字来限定这个类.

创建没有任何抽象方法的抽象类:阻止产生这个类的任何对象.

2.接口

interface关键字产生一个完全抽象的类,它没有提供任何具体实现.它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体(接口之提供;额形式,二尾提供任何具体实现).

一个接口表示:所有实现了该特定接口的类看起来都像这样(接口被用来建立类与类之间的协议).

接口可以包含域,但是这些域隐式地是static和final的.

要让一个类遵循某个特定接口(或者是一组接口),需要使用implements关键字.

在接口中,方法默认是public的.当要实现一个接口时,接口中被定义的方法必须被定义为是public的.

3.完全解耦

创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式.

适配器设计模式:适配器中的代码将接受你所拥有的接口,并产生你所需要的接口.

将接口从具体的实现中解耦使得接口可以应用于多种不同的具体实现,因此代码也就更具可复用性.

4.Java中的多重继承

使用接口的核心原因:为了能够向上转型为多个基类型(以及由此带来的灵活性).

第二个原因:防止客户端程序员创建该类的对象,并确保这仅仅是建立一个接口.

如果要创建不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类.事实上,如果知道某事物应该成为一个基类,那么第一选择应该是使它成为一个接口.

5.通过继承来扩展接口

通过继承,可以很容易地在接口中添加新的方法声明,还可以通过继承在新接口中组合数个接口,这两种情况都可以获得新的接口.

一般情况下,只可以将extends用于单一类,但是可以引用多个基类接口,只需用逗号将接口名一一隔开即可.

在打算组合的不同接口中使用相同的方法名通常会造成代码可读性的混乱,请尽量避免这种情况.

6.适配接口

接口允许同一个接口具有多个不同的具体实现.在简单的情况中,他的体现形式通常是一个接受接口类型的方法,而该接口的实现和向该方法传递的对象则取决于方法的使用者.

7.接口中的域

在Java SE5之前,在的接口中定义域(static&final)是产生于enum具有相同效果的类型的唯一途径.

在接口中定义的域不能是"空final",但是可以被非常量表达式初始化.

域不是接口的一部分,它们的值被存储在该接口的静态存储区域内.

8.嵌套接口

接口可以嵌套类或其他接口中.

嵌套在另一个接口中的接口自动就是public的,而不能声明为private的.

当实现某个接口时,并不需要实现嵌套在其内部的任何接口.

private接口不能再定义它的类之外被实现.

9.接口与工厂

接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式.

与直接调用构造器不同,在工厂对象上调用的是创建方法,而该工厂对象将生成接口的某个实现的对象.

理论上,通过这种方式,我们的代码将完全与接口的实现分离,这就使得我们可以透明地将某个实现替换为另一个实现.

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71598.html

相关文章

  • Java编程思想》笔记9.接口

    摘要:抽象类和抽象方法抽象方法这种方法是不完整的,仅有声明而没有方法。创建抽象类和抽象方法非常有用,因为他们可以使累的抽象性明确起来,并告诉用户和编译器打算怎样来使用它们。接口用于建立类于类之间的协议。与抽象类相同,防止客户端程序员创建该类对象。 点击进入我的博客 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。 9.1抽象类和抽象方法 抽象方法:这种方法是不完整的,仅有...

    JessYanCoding 评论0 收藏0
  • Thinking in Java-接口

    摘要:具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象抽象不依赖于具体,具体依赖于抽象。 9.接口 9.1 抽象类和抽象方法 抽象类:包含抽象方法的类,自身无法实例化 抽象方法:仅有声明,没有方法体 关系:抽象方法是抽象类的充分不必要条件,因此抽象类中允许方法实现和抽象方法同时存在 语法 // 抽象类 abstract class ClassName{} // 抽象方法 ab...

    silenceboy 评论0 收藏0
  • 乐字节-Java8核心特性实战之函数式接口

    摘要:大家好,上一篇小乐给大家讲述了乐字节核心特性表达式,点击回顾。接下来继续核心特性之函数式接口。感谢大家欣赏小乐带来的核心特性之函数式接口,接下来还会更多核心技术讲解,请关注乐字节如需要视频课程,请搜索乐字节腾讯课堂 大家好,上一篇小乐给大家讲述了《乐字节-Java8核心特性-Lambda表达式》,点击回顾。接下来继续:Java8核心特性之函数式接口。 什么时候可以使用Lambda?通常...

    niceforbear 评论0 收藏0
  • 聊聊 Java8 以后各个版本的新特性

    摘要:于是抽时间看了看以后各个版本的特性,做了一个总结。年和公开版本发布,取名为。此后对应版本就是,。发布,是一个重大版本更新。在此之后,就是每六个月发布一次新版本。以上和参考资料聊了一些关于的历史,下面我们看看各个版本有那些新特性。 【这是 ZY 第 11 篇原创技术文章】 某天在网上闲逛,突然看到有篇介绍 Java 11 新特性的文章,顿时心里一惊,毕竟我对于 Java 的版本认识...

    K_B_Z 评论0 收藏0
  • Oracle正式发布Java 9,引入新的Java编程组件

    摘要:的核心变化就是引入了一种新的编程组件,也就是模块,按照的说法,它是一个可命名的自描述的代码和数据集合。宣布会按照每六个月一次的节奏进行发布,意味着是最后一次特性驱动的版本发布,这反映出了目前管理的特点。 Java SE 9.0于2017年9月21日发布。JDK 9的核心变化就是引入了一种新的Java编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。...

    shenhualong 评论0 收藏0

发表评论

0条评论

lncwwn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<