【java程序设计期末复习】chapter6 接口和实现

接口与实现

接口

为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。
使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。

接口通过使用关键字interface来声明

interface Printable 
{}

理解的关键点是

(1)接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
(2)可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。

接口的变量和方法的构成规则

(1)接口中的常量自动都是public、static,final,
(2)接口中的方法默认为public abstract;接口也产生class文件。
(3)接口中的方法不能被static和final修饰,因为类要重写所有接口中的方法。
(4)接口中没有构造函数,方法可以抛出异常。

实现接口

(1)类实现接口
类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名。

(2)重写接口中的方法
类实现了某个接口,那么这个类就自然拥有了接口中的常量,default方法(去掉了default关键字),该类也可以重写接口中的default方法(注意,重写时需要去掉default关键字)。如果一个非abstract类实现了某个接口,那么这个类必须重写该接口的所有abstract方法,即去掉abstract修饰给出方法体。

接口回调

接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类重写的接口方法。实际上,当接口变量调用被类重写的接口方法时,就是通知相应的对象调用这个方法

interface  ShowMessage {void 显示商标(String s);default void outPutStart(){System.out.println("********");}
}
class TV implements ShowMessage {public void 显示商标(String s) {System.out.println("tvtvtvtv");System.out.println(s);System.out.println("tvtvtvtv");}
}
class PC implements ShowMessage {public void 显示商标(String s) { System.out.println("pcpcpcpc");System.out.println(s);System.out.println("pcpcpcpc");}
}
public class Example6_2 {public static void main(String args[]) {ShowMessage sm;                  //声明接口变量sm=new TV();                     //接口变量中存放对象的引用sm.显示商标("长城牌电视机");      //接口回调。sm=new PC();                     //接口变量中存放对象的引用sm.outPutStart();sm.显示商标("华为个人电脑");    //接口回调sm.outPutStart();} 
}

abstract类和接口的区别

接口和abstract类的比较如下:

1.abstract类和接口都可以有abstract方法。
2.接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量。
3.abstract类中也可以有非abstract方法,接口不可以。

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

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

相关文章

复习java5.26

面向对象和面向过程 面向过程:把一个任务分成一个个的步骤,当要执行这个任务的时候,只需要依次调用就行了 面向对象:把构成任务的事件构成一个个的对象,分别设计这些对象(属性和方法)、然后把…

MybatisPlus静态工具Db

前言:在开发的时候,有时Service之间也会相互调用,会出现循环依赖问题,MybatisPlus提供一个静态工具类:Db,其中的一些静态方法与IService中方法签名基本一致,也可以帮助我们实现CRUD功能。 一、Db工具类中常…

Tomcat调优参数

JVM优化 Tomcat是一个Web容器,所有的jar其实都共享Tomcat中的JVM参数,所以Tomcat的JVM参数优化至关重要。 Tomcat的JVM参数是在启动脚本中设置的,如想要设置最大堆内存和最小堆内存时: 在windows的启动脚本catalina.bat中的set &q…

深度学习面试问题总结(21)| 模型优化

本文给大家带来的百面算法工程师是深度学习模型优化面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习面试问题,并提供参考的回答及其理论基础&a…

入门五(项目介绍及登录和发布需求)

软件缺陷判定标准 项目中缺陷的管理流程 使用Excel对于缺陷进行管理 使用工具管理缺陷 一、项目背景 传智作为一个IT教育机构,拥有自己开发且实际运营的产品; 将开发和运营的技术作为授课的内容,对于学员而言学到的都是一手的真实案例和…

unordered_mapset

文章目录 Ⅰ. 使用a. unordered_mapb. unordered_set Ⅱ. 哈希表a. 闭散列:线性探测1.仿函数,2.插入,3.删除,4.查找,5.扩容 b. 开散列:哈希桶1.仿函数,2.插入,3.删除,4.查…

释放Mac潜能,选择Magic Disk Cleaner for Mac

想要让Mac运行更加流畅、性能更加出色吗?那就选择Magic Disk Cleaner for Mac吧! Magic Disk Cleaner for Mac v2.7.7激活版下载 这款软件是Mac用户的得力助手,它拥有强大的扫描和清理功能,能够迅速找出并删除硬盘上的无用文件和垃…

如何查看哪些组策略应用于你的电脑和用户帐户?这里有详细步骤

如果你希望在电脑上查看所有有效的组策略设置,以下是操作方法。 什么是Windows中的组策略 在Windows世界中,组策略为网络管理员提供了一种将特定设置分配给用户组或计算机组的方法。然后,无论何时组中的用户登录到联网的PC,或无论何时启动组中的PC,都会应用这些设置。 …

零基础学Java第二十三天之网络编程

网络编程 1. 网络编程 实现多台计算机之间实现数据的共享和传递,网络应用程序主要组成为: 网络编程IO流多线程 2. 网络编程三要素 网络通讯的模型:请求-响应,客户端-服务端 三要素:IP地址,端口&#…

头歌OpenGauss数据库-I.复杂查询第7关:李老师教的课程成绩最低的学生

任务描述 本关任务:根据提供的表和数据,查询选修“李四”老师所授课程的学生中,成绩最低的学生信息(具体输出信息请查看测试说明)及其成绩。 student表数据: s_ids_names_sex01Mia女02Riley男03Aria女04Lucas女05Oliver男06Caden男07Lily女08Jacob男course表数据: c_idc…

谷歌Google广告投放优势和注意事项!

谷歌Google作为全球最大的搜索引擎,谷歌不仅拥有庞大的用户基础,还提供了高度精准的广告投放平台,让广告主能够高效触达目标受众,实现品牌曝光、流量增长乃至销售转化的多重目标,云衔科技以专业服务助力您谷歌Google广…

【MySQL】库的基础操作

🌎库的操作 文章目录: 库的操作 创建删除数据库 数据库编码集和校验集 数据库的增删查改       数据库查找       数据库修改 备份和恢复 查看数据库连接情况 总结 前言:   数据库操作是软件开发中不可或缺的一部分&#xff0…

pod进阶—资源限制以及探针检查

一、资源限制 1.1 资源限制定义: 当定义Pod时可以选择性的为每个容器设定所需要的资源数量。最常见的可设定资源是CPU和内存大小,以及其他类型的资源。 1.2 资源限制request和limit资源约束 ①当为 Pod 中的容器指定了 request 资源时&#x…

百度文心大模型宣布两大主力模型ENIRE Speed、ENIRE Lite免费用

今日,百度智能云宣布文心大模型的两款主力模型ENIRE Speed、ENIRE Lite全面免费,即刻生效。这两款大模型今年3月发布,均支持8K和128k上下文长度。据了解,ERNIE Lite是百度自研的轻量级大语言模型,兼顾优异的模型效果与…

透视App投放效果,Xinstall助力精准分析,让每一分投入都物超所值!

在移动互联网时代,App的推广与投放成为了每一个开发者和广告主必须面对的问题。然而,如何精准地掌握投放效果,让每一分投入都物超所值,却是一个令人头疼的难题。今天,我们就来谈谈如何通过Xinstall这个专业的App全渠道…

【代码】Goc小游戏

1.口算测试 int a,b,lv1,score0,nd,yu,da,day,j,s_j0,cuo0; int main(){p.picL(1,"boy0.png").picL(2,"boy1.png").picL(3,"boy2.png").picL(4,"boy3.png");p.rr(1000,1000,14).speed(10).up().hide();p.moveTo(0,150).text("加…

372. 超级次方

题目 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。 示例 1: 输入:a 2, b [3] 输出:8 示例 2: 输入:a 2, b [1,0] 输出:1024…

【二叉树】LeetCode.144:二叉树的前序遍历(小细节把握)

🎁个人主页:我们的五年 🔍系列专栏:初阶初阶结构刷题 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 1.题目描述:​编辑 2.问题分析: 🍔函数解读: …

粤嵌—2024/5/23—不同路径 ||(✔)

代码实现&#xff1a; int uniquePathsWithObstacles(int **obstacleGrid, int obstacleGridSize, int *obstacleGridColSize) {int x obstacleGridSize, y obstacleGridColSize[0];int dp[x][y];memset(dp, 0, sizeof(int) * x * y);for (int j 0; j < y && obs…

MySQL为什么会选错索引

有的时候&#xff0c;我们加了索引&#xff0c;也不一定最终查询语句就能用上索引&#xff0c;因为Innodb要不要使用索引&#xff0c;该使用哪个索引是优化器决定的&#xff0c;它是根据成本&#xff08;代价&#xff09;预估来选择的&#xff0c;他会倾向于选择一个成本最低的…