第一百二十三节 Java面向对象的设计 - Java接口继承

Java面向对象的设计 - Java接口继承

接口可以从另一个接口继承。与类不同,接口可以从多个接口继承。

interface Singer {void sing();void setRate(double rate);double getRate();
}
interface Writer {void write();void setRate(double rate);double getRate();
}
interface Player {void play();void setRate(double rate);default double getRate() {return 300.0;}
}

一个接口使用关键字extends来继承自其他接口。关键字extends之后是以逗号分隔的继承接口名称列表。

继承的接口称为超级接口,继承接口的接口称为子接口。

接口继承其超级接口的以下成员:

  • 抽象和默认方法
  • 常量字段
  • 嵌套类型

接口不从其超级接口继承静态方法。

接口可以重写它从其超级接口继承的继承的抽象和默认方法。

如果超级接口和子接口具有相同名称的字段和嵌套类型,则子接口获胜。

interface A {String s = "A";
}
interface B extends A {String s = "B";
}
public class Main {public static void main(String[] argv){System.out.println(B.s);}
}

以下代码显示如何重写默认方法。

interface A {default String getValue(){return "A";}
}
interface B extends A {default String getValue(){return "B";}
}class MyClass implements B{
}public class Main {public static void main(String[] argv){System.out.println(new MyClass().getValue());}
}

上面的代码生成以下结果。

继承冲突实现

引入默认方法使得类可以从其超类和超级接口继承冲突的实现。

Java使用三个简单的规则为了解决冲突。

  1. 超类总是获胜
  2. 最具体的超级接口获胜
  3. 类必须重写冲突的方法

instanceof运算符

我们可以使用instanceof运算符来评估引用类型变量是指特定类的对象还是其类实现特定接口。

instanceof运算符的一般语法是

referenceVariable instanceof  ReferenceType
interface A {default String getValue(){return "A";}
}
interface B {default String getValue(){return "B";}
}class MyClass implements B,A{public String getValue(){return "B";}
}public class Main {public static void main(String[] argv){MyClass myClass = new MyClass();System.out.println(myClass instanceof MyClass);System.out.println(myClass instanceof A);System.out.println(myClass instanceof B);}
}

上面的代码生成以下结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人间烟火气视频素材去哪里找?人间生活气息视频素材网站分享

在数字化时代迅猛发展的今天,短视频已经成为人们表达情感、记录生活的流行方式。无论是在抖音、快手还是B站,一种特别的元素——人间烟火气,为短视频增添了无尽魅力。许多创作者常常困惑,这种生活气息浓厚的视频素材应当如何寻找&…

使用 Swift 6 语言模式构建 Swift 包

文章目录 前言下载 Swift 6 工具链Swiftenv - macOSSwiftly - Linux在 SPM 中启用语言模式命令行包清单文件输出结论前言 我最近了解到,Swift 6 的一些重大变更(如完整的数据隔离和数据竞争安全检查)将成为 Swift 6 语言模式的一部分,该模式将在 Swift 6 编译器中作为可选…

Python 类对象

Python 类对象 经典迭代器 可迭代对象的定义: 使用内置的iter可以获取迭代器的对象。如果对象实现了能返回迭代器的__iter__方法,那么对象就是可迭代的。序列都可以迭代。实现了__getitem__方法,而且接受从0开始的索引,这种对象也…

EfficientNet-V1论文阅读笔记

目录 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks摘要Introduction—简介Compound Model Scaling—混合模型缩放Problem Formulation—范式化问题(理论基础)Scaling Dimensions—维度缩放Compound Scaling—混合缩放 Eff…

【网络协议】精讲ARP协议工作原理!图解超赞超详细!!!

亲爱的用户,打开微信,搜索公众号:“风云说通信”,即可免费阅读该文章~~ 目录 前言 1. ARP协议介绍 1.1 ARP协议功能 1.2 ARP请求报文 1.3 ARP工作原理 2. ARP 缓存超时 2.1 RARP 3. ARP 攻击 3.1 ARP 攻击分类 前言 首先…

理解人体手臂七个自由度对应的运动

写本篇的目的在于,我发现很多人理不清人体手臂运动时内收/外展、屈曲/伸展等动作描述的关系,包括我自己也是! 我每次要用到的时候都要去查,记不下来,比较麻烦,于是归纳本篇,包含了我本人的理解 …

Hightec编译器系列之高级调试技巧精华总结

Hightec编译器系列之高级调试技巧精华总结 小T为了便于大家理解,本文的思维导图大纲如下: 之前可能很多小伙伴没有使用过Hightec编译器,大家可以参考小T之前的文章《Hightec编译器系列之白嫖就是爽》可以下载一年试用版本。 小T使用过适配英…

GEOSERVER 添加 Shapefile

添加 Shapefile 是任何 GIS 工具的核心。本节介绍使用 GeoServer 添加和发布 Shapefile 的任务。 导航到 workshop 目录(在 Windows 上)并找到以下 shapefile:$TRAINING_ROOT/data/user_data/%TRAINING_ROOT%\data\user_data 主要道路. shp 主…

pyhon模块以及常用的第三方模块

import my_info as info print(info.name) info.show()from my_info import * print(name) show() pyhon中包的导入 import admin.my_admin as ad # 包名.模块名 admin是包名,my_admin是模块名print(ad.name) print(ad.info())from admin import my_admin as ad # …

第二证券股市资讯:“掘金”东南亚 券商出海正当时

东南亚正在成为中资券商出海的“新站点”。 随着中资企业“走出去”的步伐愈加坚决,为其供给金融服务的中资券商也越来越重视世界事务布局。与上一波集体“落子”香港不同,此次中资券商纷纷将目光投向东南亚。在中资企业产业链迁至东南亚的趋势带动下&a…

Go 语言学习笔记之字典 Map

Go 语言中的字典 Map 大家好,我是码农先森。 概念 在 Go 语言中,字典被称为 map,它是一种无序的集合,用于存储键值对。每个键在 map 中必须是唯一的,并且对应一个值。map 是一种非常常用的数据结构,用于…

File文件转Blob文件,临时路径浏览器可查看

fileToBlob (file) { var reader new FileReader(); reader.readAsArrayBuffer(file); reader.onload function (event) { let blob new Blob([event.target.result], { type: file.type }); //{ type: file.type } 预览blob发现乱码可能是type不对 要获取file文件的type …

Python统计实战:3D散点图绘制

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 (以下练习题来源于《统计学—基于Python》。联系获取完整数据和Python源代码文件。) 练习题 用以下数…

17.RedHat认证-Ansible自动化运维(下)

17.RedHat认证-Ansible自动化运维(下) 这个章节讲ansible的变量,包括变量的定义、变量的规则、变量范围、变量优先级、变量练习等。 以及对于tasks的控制,主要有loop循环作业、条件判断等 变量 介绍 Ansible支持变量功能,能将value存储到…

MOE学习笔记

MOE网络结构 和传统的 transformer 网络结构相比,我们将 Transformer 模型的每个 FFN 层替换为 MoE 层,MoE 层由门网络(Router)和一定数量的专家(Expert)组成。 这些 Expert 其实也是 FFN 层,…

刷代码随想录有感(116):动态规划——单词拆分

题干&#xff1a; 代码&#xff1a; class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string>set(wordDict.begin(), wordDict.end());vector<bool>dp(s.size() 1, false);dp[0] true;for(int j 0; j &…

SAPUI5基础知识9 - JSON Module与数据绑定

1. 背景 在前面的博客中&#xff0c;我们已经学习了SAPUI5中视图和控制器的使用&#xff0c;在本篇博客中&#xff0c;让我们学习下MVC架构中的M-模型了。 SAPUI5中的JSON Model是一个客户端模型&#xff0c;可以用于在SAPUI5应用程序中处理和操作JSON数据。SAPUI5提供了绑定…

【服务器05】之【登录/注册账号成功转至游戏场景】

Unity登录注册数据库 打开【服务器01】的文章项目 导入新UI系统 点击2D 双击输入栏位置 修改输入框尺寸及位置 放大字体 修改默认输入文字 发现中文字变成了口口口口 原因是新UI系统不支持中文&#xff0c;解决这个问题需要更换字体 并且修改输入时字体大小 我们取电脑中找Fon…

2k240hz显示器推荐 - 精选10款 - 高能评测

今天给大家精选了10款2k240hz显示屏&#xff0c;欢迎大家了解。 1.HKC G25H4 - 2k240hz显示器推荐 售价&#xff1a;1999 &#x1f440; 今天我要跟大家分享一款让我彻底被种草的显示器——HKC G25H4&#xff01;&#x1f389; 如果你跟我一样&#xff0c;对游戏和视觉体验有…

存储无界限:MK米客方德SD NAND系列,小容量到大容量的全方位覆盖

在这个数字化飞速前进的时代&#xff0c;数据存储的需求日益增长&#xff0c;不同的应用场景对存储容量的要求也各不相同。MK米客方德公司以其SD NAND系列产品&#xff0c;凭借其广泛的容量覆盖&#xff0c;从1Gb到512Gb&#xff0c;为各种应用场景提供了完美的存储解决方案。今…