Java基础:面向对象---接口的本质

之前我们一直在说, 程序主要就是数据以及对数据的操作,而为了方便操作数据,高级语言引入了数据类型的概念。Java定义了8种基本数据类型,而类相当于是自定义数据类型,通过类的组合和继承可以表示和操作各种事物或者说对象。

除了基本的数据类型和类概念,还有一些扩展概念,包括接口、抽象类、内部类和枚举。上一章我们提到,继承有其两面性,替代继承的一种方式是使用接口,接口到底是什么呢?此外,介于接口和类之间,还有一个概念:抽象类,它又是什么呢?一个类可以定义在另一个类内部,称为内部类,为什么要有内部类,它到底是什么呢?枚举是一种特殊的数据类型,它有什么用呢?

为了弄清楚上述问题,将分两个章节进行学习,第一章节为本文,第二章节为《面向对象:类的拓展(之二:抽象类、内部类、枚举的本质)》


在之前的章节中,我们一直在强调数据类型的概念,但只是将对象看作属于某种数据类型,并按该类型进行操作,在一些情况下,并不能反应对象以及对象操作的本质.

为什么这么说呢?很多时候,我们实际上关心的,并不是对象的类型,而是对象的能力,只要能提供这个能力,类型并不重要.我们来看一下生活中的例子.

比如要拍照,很多时候,只要能拍出符合需求的照片就行,至于是用手机拍,还是用Pad拍,或者用单反拍,并不重要,即关心的是:对象是否有拍出照片的能力,而并不关心对象到底是什么类型,手机、Pad或单反相机都可以.

切换到编程的逻辑思维中:类型并不重要,重要的是能力.那如何表示能力呢?接口.

下面,将详细介绍接口,包括其概念、用法、一些细节,以及如何用接口替代继承.

1.接口的概念

接口这个概念在生活中并不陌生,电子世界中一个常见的接口就是USB接口.计算机往往有很多USB接口,可以插各种USB设备,如键盘、鼠标、U盘.

接口声明了一组能力,但它自己并没有实现这个能力,它只是一个约定.接口涉及交互两方对象,一方需要实现这个接口,另一方使用这个接口,但双方对象并不直接互相依赖,它们只是通过接口间接交互,如下图所示:

这里写图片描述

拿上面的USB接口来说,USB协议约定了USB设备需要实现的能力,每个USB设备都需要实现这些能力,计算机使用USB协议与USB设备交互,计算机和USB设备互不依赖,但可以通过USB接口相互交互.那,Java中的接口又是怎样的呢?

2.定义接口

我们通过一个例子来说明Java中接口的概念.这个例子是"比较",很多对象都可以比较,对于求最大值、求最小值、排序的程序而言,它们其实并不会关心对象的类型是什么,只要对象可以比较就可以了,或者说,它们关心的是对象有没有可比较的能力.Java API中提供了Comparable接口,以表示可比较的能力.但本章节主要是讲解接口,我们先自己定义一个Comparable接口,叫MyComparable.

首先来定义这个接口,代码如下:

public interface MyComparable {
    int compareTo(Object other);
}

定义接口的代码解释如下:

  1. Java使用interface 这个关键字来声明接口,修饰符一般都是public.
  2. interface 后面就是接口的名字MyComparable.
  3. 接口定义里面,声明了一个方法compareTo,但没有定义方法体,Java 8之前
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值