java之接口和抽象类的综合案例以及如何用接口优化代码

//定义一个类,这个类里因为有抽象方法,所以我们要把这个类定义为抽象类
public abstract class Sports {private String name;private int age;//空参public Sports() {}//有参public Sports(String name, int age) {this.name = name;this.age = age;}//定义get和set方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//定义俩个抽象类,返回值为void//这个为学习抽象类public abstract void Play();//这个为教学抽象类public abstract void Techer();
}

上面这个是javabean类,把一些共性参数写在了里面,我们下次可以直接调用.

//这里我们继承了Sports这个父类
public class PingPong extends Sports {public PingPong() {}public PingPong(String name, int age) {super(name, age);}//在这里我们调用了父类的方法并且重写方法覆盖进去@Overridepublic void Play() {System.out.println("学打乒乓球");}@Overridepublic void Techer() {System.out.println("教打乒乓球");}}

这个是子类,继承了父类.并且在这里我们调用了父类的方法并且重写方法覆盖进去.

public class BaskteBall extends Sports{public BaskteBall() {}public BaskteBall(String name, int age) {super(name, age);}@Overridepublic void Play() {System.out.println("学打篮球");}@Overridepublic void Techer() {System.out.println("教打篮球");}
}

这个也是子类,并且在这里我们调用了父类的方法并且重写方法覆盖进去.

最后一个是测试类:

在这个测试类,我们进行传参,然后调用方法,并且进行打印
public class Test {public static void main(String[] args) {//这里我们进行传参PingPong pingPong = new PingPong("小明",15);//在这里我们调用pingpong里面的方法System.out.println(pingPong.getName()+","+pingPong.getAge());pingPong.Play();pingPong.SpeakEnglish();//这里我们进行传参BaskteBall baskteBall=new BaskteBall("小强",16);//在这里我们调用 baskteBall里面的方法System.out.println(baskteBall.getName()+","+baskteBall.getAge());baskteBall.Play();baskteBall.SpeakEnglish();}
}

而其实这里我们要知道这里我们其实并没有用到接口,这样的我们只用继承的话可能代码不够清晰明了, 那么我们就在调用一个接口:

public interface Techer {//这里我们定义了一个接口 方便我们后面去调用public void techer();
}

接口一定要用interface去调用才行,

在PingPongTeacher这个类别里面,我们就用implements接口Techer:

然后把techer里面的方法体重新书写,

然后我们这里调用的时候,直接调用techer就行,就不要再去继承了,因为继承的话,你又要重新书写方法覆盖掉原来父类的方法,结果输出如下:

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java数据结构和算法中文版(第2版)详细教程

前言 数据结构是指数据在计算机存储空间中(或磁盘中)的安排方式。算法是指软件程序用来操作这些结构中的数据的过程。几乎所有的计算机程序都使用数据结构和算法,即使最简单的程序也不例外。比如设想一个打印地址标签的程序,这个程序使用一个数组来存储…

如何使用git拉取gitee上面的项目/代码?(超简单)

一、下载git软件 下载地址:git官网地址 1.点击右边小电脑上的按钮下载 2.选择自己电脑对应的系统 3.基本都是默认,这里需要勾一下就ok 4.正在安装 2.使用git软件 1.如何打开git 找到你想要操作的文件夹,右击open git bash here就可以…

内衣洗衣机多维度测评对比,了解觉飞、希亦、鲸立哪款内衣洗衣机更好

想要代替手洗内衣物,那么一台内衣专用的小型洗衣机就必不可少啦,不仅能够为我们节约更多的时间以及精力,还能大大提高内衣物的卫生,面对于市面上各种各样的小型内衣洗衣机,相信很多小伙伴都无从下手! 为一…

英飞凌 TC3XX单片机HSM内核开发-Secure Boot(五)

ROM固件和启动过程 AURIX 芯片,带有硬件安全模块 (HSM) 的芯片,包含两个 ROM 固件:TriCore(CPU0) 的启动软件 (SSW) 和 HSM 的启动系统 (BOS)。这些固件不共享相同的指令集架构 (ISA)。 1. 芯片启动 AURIX芯片冷启动和热启动时的启动顺序受…

线程池和进程池,输出有区别吗?

from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor def fn(name):for i in range(1000):print(name,i)if __name__ __main__:with ThreadPoolExecutor(10) as t:for i in range(100):t.submit(fn,namef"线程{i}")with ProcessPoolExecutor(10…

Linux第七节课gcc与g++

一、补充权限 普通用户无法执行sudo: 通过sudo执行后显示不在sudoers file中!(张三不被信任!) 需要修改配置文件(白名单!) 配置文件位于以下目录: ls /etc/sudoers -…

如何在 Odoo 16 网站中创建高级选择字段

Odoo 在后端用户界面中包含各种小部件,用于执行各种活动,例如 one2many、many2many、many2many_tags 等,这简化并简化了 Odoo 中选择字段的操作。因此,当我们创建包含 one2many 或 many2many 字段的表单时,很难在没有外…

如何在linux中安装搜狗输入法

参考网址:搜狗输入法linux-安装指导 sudo apt-get install fcitx 1.更新源:在终端输入 sudo apt update 2.安装fcitx输入法框架: sudo apt install fcitx 3.设置fcitx开机自启动 sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/aut…

航空航天混合动力(1)全权限数字发动机控制器(FADEC)

航空航天混合动力(1)全权限数字发动机控制器(FADEC) 1.概况2.什么是全权限数字发动机控制器(FADEC)?2.1核心技术2.2应用场景2.3国内FADEC供应商2.4近期进展2.5数字发动机控制和全权数字发动机控…

开放式耳机什么牌子的好?看这6大品牌就够了

移动互联网时代,听歌、追剧、网课、短视频……这几年全球青年人对于耳机和耳朵的依赖程度,可谓前所未有的提升。但选择一款好的耳机,也不是一件容易的事,入耳式耳机戴久了耳道会疼,还可能引起一系列不必要的炎症&#…

彻底搞清楚SSR同构渲染的首屏

作为.NET技术栈的全干工程师,Blazor、Vue/Nuxt.js和React/Next.js都会接触到。它们(准确的说是Blazor、Nuxt和Next),都实现了SSR同构渲染。要了解同构渲染,需要从服务端渲染开始。 传统的服务端渲染 如下图所示&…

孟德尔随机化、R语言,报错,如何解决?

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

喜讯|华院计算Uni-law法律大模型成功入选《2024中国数据智能产业AI大模型先锋企业》

7月24日,“2024企业数智化转型升级发展论坛——暨AI大模型趋势论坛”在北京圆满落幕。此次论坛由数据猿主办,IDC协办,新华社中国经济信息社、上海大数据联盟、上海市数商协会及上海超级计算中心作为支持单位。大会以“数智新质力拓未来”为主…

世界上速度最快的超级计算机推导出超级BC8钻石配方

BC8 超级钻石比任何已知材料都要坚硬,但它们很可能只存在于巨型系外行星的内核中。现在,世界上最强的超级计算机"前沿"已经揭开了它们形成的秘密,这一发现可能会导致在地球上生产它们。 钻石不仅是夺人眼球的珠宝,而且在…

【日记】9 个发箍只有 2 个能压住头发……(513 字)

正文 今天下午实在有些受不了,从正大门外走了出去。抬头望着天空,望着那些悠然自在纯白无暇的云,竟然有些眼睛疼,刺激到想要流泪。 我在室内待得太久太久了。似乎很久没有在这种时间段出来过了。 下午快下班的时候,有个…

使用docker在CentOS 7上安装php+mysql+nginx环境教程并运行WordPress

文章目录 一、安装docker1、切换yum源并更新系统2、卸载旧版docker3、配置Docker的yum库4、安装Docker5、启动和校验Docker6、配置镜像加速6.1、注册阿里云账号6.2、开通镜像服务6.3、配置镜像加速二、部署php+mysql+nginx环境1、准备目录结构2、拉取镜像3、运行容器并从中拷贝…

LLaMA-Factory私有化部署--云服务器版

LLaMA-Factory是一款比较流行的大语言模型微调框架。本文主要记录在阿里云人工智能平台PAI的DSW实例中部署LLaMA-Factory的过程,主要参考的教程是B站视频LLaMA-Factory私有化部署。 LLaMA-Factory的私有化部署与部署大模型的过程大体相同,都包括创建Pyt…

AI画笔,你的创意伙伴:6款最佳AI绘画工具推荐

在这个无限可能的时代,一个优秀的人工智能绘画软件不仅可以打破传统绘画方法的束缚,而且可以让每个热爱艺术的人都体验到创作的乐趣。那么,什么样的人工智能绘画软件才是优秀的呢?什么样的人工智能绘画软件才能生成超逼真的AI绘画…

Java面试八股之Spring如何解决循环依赖

Spring如何解决循环依赖 在Spring框架中,循环依赖问题通常发生在两个或多个Bean相互依赖的情况下。Spring为了解决循环依赖问题,采用了不同的策略,这些策略主要取决于Bean的作用域以及依赖注入的方式。下面是一些关键点: 单例Be…