`
李灵晖-raylee
  • 浏览: 135864 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-7.4 实现多重接口

 
阅读更多

这一章节我们来说一下接口另一个特性:多重接口。

在平常,使用继承,我们只是继承某一类,只能够一种向上转型,但是在接口的使用方面,可以实现多个接口,然后实现多种的向上转型。

我们先上代码:

package com.ray.ch07;

public class Test {

	public static void testSwim(CanSwim canSwim) {
		canSwim.swim();
	}

	public static void testEat(CanEat canEat) {
		canEat.eat();
	}

	public static void testRun(CanRun canRun) {
		canRun.run();
	}

	public static void main(String[] args) {
		Person person = new Person();
		testSwim(person);//向上转型为CanSwim
		testEat(person);//向上转型为CanEat
		testRun(person);//向上转型为CanRun
		Fish fish = new Fish();
		testSwim(fish);//
		// testEat(fish);//error,因为没有实现接口,不能向上转型
		// testRun(fish);//error,因为没有实现接口,不能向上转型
	}
}

interface CanRun {
	void run();
}

interface CanSwim {
	void swim();
}

interface CanEat {
	void eat();
}

class Person implements CanEat, CanRun, CanSwim {

	@Override
	public void swim() {
		System.out.println("i can swim");
	}

	@Override
	public void run() {
		System.out.println("i can run");
	}

	@Override
	public void eat() {
		System.out.println("i can eat");
	}

}

class Fish implements CanSwim {

	@Override
	public void swim() {
		System.out.println("i can swim");
	}
}


解释一下上面的代码:

1.建立了三个接口:会游泳,会跑,会吃

2.建立一个Person类,实现上面三个接口

3.建立一个Fish类,只是实现游泳的接口

4.然后在测试代码里面使用策略设计模式,测试一下三种技能

在代码里,Person 分别向上转型为CanRun、CanSwim、CanEat这三种类型,这样大大增强代码的灵活性,要不然我们就必须在测试代码方面增加代码,才能够完整测试。而且也不利于代码的复用,假如CanSwim这个不是接口,他变成了基类,但是他的实现可能对于Person或者Fish来说都是不合适的,而且代码可能歧义,但是现在是接口,只是一种协议,说明子类只是具备某种功能,而这个功能怎么实现,具体需要根据子类的实现来说,这样代码更能够广泛的复用。

总结:这一章节主要讲述了接口的多重实现,以及他的灵活性。

这一章节就到这里,谢谢。

-----------------------------------

目录

分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

    在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    标题中的“api-ntrip-java-client-master.zip”是一个包含Java实现的NTRIP客户端的源代码压缩包,专门针对Android平台。NTRIP(Networked Transport of RTCM via Internet Protocol)是一种用于实时传输GPS(全球...

    eclipse-java-2021-12-R-win32-x86_64.zip

    用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...

    aip-java-sdk-4.2.0

    标签 "aip sdk" 进一步确认了这是一个与百度AIP相关的SDK,通常这样的SDK会提供一系列预先封装好的接口,使得开发者可以快速地在自己的项目中集成AI功能,而无需从头开始编写复杂的算法和模型。 在压缩包的文件名称...

    aspose-words-java-23.6-jdk17.jar.zip

    【标题】"Aspose.Words for Java 23.6 with JDK 17 Support" Aspose.Words 是一个强大的文档处理库,专为Java开发者设计,用于创建、操作和转换各种文档格式。版本23.6是这个库的一个重要更新,它引入了对Java ...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...

    java-Swing外观包

    在"Swing外观包.jar"这个文件中,可能包含了一些预设的LookAndFeel实现或者定制的LookAndFeel类,以便开发者可以直接导入并应用于他们的项目中,无需从头开始编写。这大大简化了创建独特界面的过程,使得开发者可以...

    socket做的支持多线程断点上传or断点续传Java源码

    标题中的“socket做的支持多线程断点上传or断点续传Java源码”涉及到的是在网络编程中,如何使用Java的Socket API实现一个能够处理断点上传和断点续传功能的服务。这是一个高级的网络编程任务,通常在大型文件传输...

    使用渲染脚本实现模糊视图背景 - Java - 下载.zip

    使用这个库,开发者可以避免从头实现模糊算法,而是直接调用库中的函数,减少工作量,提高效率。在实际应用中,这种模糊视图背景常用于对话框、弹出窗口或者浮动视图,以提供更好的视觉层次感和用户体验。 总结来说...

    java-多文件上传dome

    在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。

    _Java-集合容器-2.List及其实现类.ppt

    学习List接口及其实现类是理解Java集合框架的关键步骤。通过熟练掌握这些知识,开发者可以更有效地组织和操作数据,提高代码的效率和可维护性。在实际开发中,根据需求选择合适的List实现类,如需要高效随机访问则...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时...通过学习和使用这个SDK,开发者可以迅速在自己的应用中实现稳定、可靠的即时通信功能,而无需从头构建整个通讯系统,大大节省了开发时间和资源。

    Java---笔试题大全

    4. **多线程表示**:多线程的两种创建方式是继承`Thread`类和实现`Runnable`接口。同步的实现包括`synchronized`关键字用于方法或代码块,以及`wait()`、`notify()`、`notifyAll()`方法用于线程间的通信。 5. **...

    Java软件开发实战 Java基础与案例开发详解 11-4 List接口实现类 共15页.pdf

    根据给定文件的信息,我们可以提炼出关于Java软件开发中List接口实现类的关键知识点。这部分内容主要聚焦于第11章的“Java集合框架和泛型机制”,特别关注List接口及其几种实现类,包括`ArrayList`、`LinkedList`、`...

    java-lib

    在Java编程中,库(Library)是预先编写好的代码集合,程序员可以导入并直接使用,无需从头开始编写所有功能。这些库通常以JAR(Java Archive)文件的形式存在,里面封装了类和方法,可供应用程序调用。Java库广泛...

    ks-java-lib:包含 Java 的 KS 库

    【标题】"ks-java-lib:包含 Java 的 KS 库" 提供的是一个专门为 Java 开发者设计的库,它扩展了 Java 的功能,为开发者在处理特定任务时提供了便利。这个库可能包含了丰富的类和方法,旨在简化开发过程,提高代码的...

    java-pdf&word-jar.zip

    在IT行业中,处理PDF和Word文档是...开发者可以结合这些库,轻松地在Java程序中实现对PDF和Word文档的高效操作,满足各种业务需求。在实际开发中,根据项目的具体需求选择合适的库,能极大地提高开发效率和代码质量。

    curso-java-pildorasInf:从头开始学习Java

    【标题】:“curso-java-pildorasInf:从头开始学习Java” 这门“从头开始学习Java”的课程,源自"PillsInformática"的教育资源,旨在为初学者提供全面的Java编程知识。Java是一种广泛使用的面向对象的编程语言,由...

Global site tag (gtag.js) - Google Analytics