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

从头认识java-7.5 怎样通过继承扩展接口?

 
阅读更多

我们这一章节来讨论一下怎样通过继承扩展接口。

接口跟类一样,具有继承的特性,但是他只是继承接口,不继承类。

package com.ray.ch07;

interface WhatPersonCanDo {
	void run();

	void sleep();
}

interface WhatSingerCanDo extends WhatPersonCanDo {
	void sing();
}

class Singer implements WhatSingerCanDo {

	@Override
	public void run() {
		// TODO Auto-generated method stub

	}

	@Override
	public void sleep() {
		// TODO Auto-generated method stub

	}

	@Override
	public void sing() {
		// TODO Auto-generated method stub

	}
}


从上面的代码可以看出,WhatSingerCanDo继承了WhatPersonCanDo,使得Singer在实现WhatSingerCanDo接口的时候,需要重写三个方法。

虽然通过继承可以对接口进行扩展,但是,需要注意的是不同接口定义相同名称的方法这一混淆点。

因为不同的接口定义了相同标签的方法,而且看上去还是重写覆盖的样子,这个时候就会使得可读性大大降低。

当然,这一点可能在实际编程里面稍微少见,但是也是可能出现的注意点。

下面是一个错误的代码,无论怎么注释都是错误,下面注释里面注解了一些错误。

package com.ray.ch07;

interface interface1 {
	void run();
}

interface interface2 {
	void run(int speed);

}

class father {
	public int run(int speed) {
		return speed;
	}
}
/**
 * The return types are incompatible for the inherited methods interface2.run(int), father.run(int)
 */
class Test extends father implements interface1, interface2 {//error

	/**
	 * Multiple markers at this line - The return type is incompatible with
	 * father.run(int) - overrides com.ray.ch07.father.run - Duplicate method
	 * run(int) in type Test
	 */
	// @Override
	// public void run(int speed) {
	// }

	/**
	 * Multiple markers at this line - The return type is incompatible with
	 * interface2.run(int) - overrides com.ray.ch07.father.run
	 */
	// @Override
	// public int run(int speed) {
	// }

	@Override
	public void run() {
	}
}


当然,出现上面的这种情形是非常少见的,因为现在大部分的编程人员都使用框架,而且都是单继承和单接口,但是我们还必须注意这点。

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

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

目录


分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

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

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

    Eclipse IDE for Java Developers 是一款广泛使用的集成开发环境(IDE),专为Java编程设计。它由Eclipse基金会维护,提供了一整套工具,用于编写、调试、测试和部署Java应用程序。2021-12-R 版本是Eclipse的一个...

    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(全球...

    aip-java-sdk-4.2.0

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

    MCS-51.rar_51?????ASM

    7. **串行通信接口**:具有全双工的UART接口,可以进行串行数据传输。 【ASM子程序库】是预先编写好的汇编语言函数集合,这些函数通常经过优化,执行效率高且功能明确。在“MCS-51单片机实用子程序库.txt”中,可能...

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

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

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

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

    Java---笔试题大全

    Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...

    java-Swing外观包

    Java Swing是Java GUI(图形用户界面)开发的一个重要组件,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing提供了丰富的组件库,允许开发者创建美观且功能丰富的交互式用户界面。在这个...

    java-多文件上传dome

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

    JAVA继承、抽象类、接口[汇编].pdf

    与某些其他语言不同,Java不支持一个类直接继承多个父类,但可以通过实现多个接口来达到类似的效果。这种设计避免了多继承可能导致的复杂性和不确定性。 总结来说,Java的继承、抽象类和接口是实现面向对象特性的...

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

    通过这个课程,你将从安装Java开发环境(如JDK)开始,逐步学习Java语法、类与对象、封装、继承、多态等核心概念。此外,你还将接触到控制流(条件语句、循环)、异常处理、文件操作、集合框架、IO流、多线程、网络...

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

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

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

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

    java-lib

    "java-lib"是一个与Java编程相关的资源集合,很可能包含了各种常用的Java库,这些库可以帮助开发者在进行Java开发时提高效率,解决特定问题。"java-all-lib"的标签可能表示这个压缩包包含了广泛的Java库,涵盖了多种...

    j从头开始学java

    《从头开始学Java》这份课程资料包含了Java编程的基础到进阶内容,旨在为初学者提供全面的学习指导。以下是对各个章节内容的详细解析: 1. **Java语言概述**:这部分通常会介绍Java的历史背景、特点和应用领域,...

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

    List接口是Java集合框架中的核心接口之一,它继承自Collection接口,并具有特定的特性:元素可以重复,保持元素的顺序,并允许对元素的位置进行精确控制。List接口有多个实现类,包括ArrayList、LinkedList、Vector...

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

    在Java开发中,创建具有模糊效果的视图背景可以提升应用程序的用户体验,使其看起来更加现代和精致。"使用渲染脚本实现模糊视图背景"是一个常见的技术实践,它通常涉及到图形处理和用户界面的设计。在这个项目中,...

    java-pdf&word-jar.zip

    通过Spire.Doc,你可以执行以下操作: 1. 创建新文档:从头开始创建Word文档,设置页面布局、字体样式、段落格式等。 2. 编辑现有文档:加载现有的Word文件并修改内容,包括文本、图像、表格、页眉页脚等元素。 3. ...

Global site tag (gtag.js) - Google Analytics