java接口练习

首先,明确:接口可以提供模糊的方法,方案;那么具体的实现需要另外创建实现类去实现;

另外:明确接口的特点:接口回调,接口的多态性;

具体解释:

接口的特点:

1.接口回调:接口回调是指可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类重写的接口方法法;(接口变量 = new  实现类())-->(接口变量.实现类的方法)

2.接口的多态性:由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态。这儿就是类似行为多态

下面是例题:

1.准备一个学生类

package test2;public class Student {//学生类private String name;private char sex;private double score;public Student() {}public Student(String name, char sex, double score) {this.name = name;this.sex = sex;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}

2.准备学生管理类----班级类:注意:创建接口变量接收实现类创建的对象(的地址);

package test2;import java.util.ArrayList;public class Class {//班级管理平台;//班级管理需要整合班级学生;//面向接口编程;private Scheme scheme = new Scheme2();//这里就体现了多态的解耦合性//创建学生集合;private ArrayList<Student> students = new ArrayList<>();//写出class类的构造器为集合初始化;public Class(){//在学生集合中添加学生对象;students.add(new Student("张三",'男',85));students.add(new Student("李四",'男',99));students.add(new Student("小舞",'女',60));students.add(new Student("赵六",'男',100));students.add(new Student("四娘",'女',10));}//准备各项方法;(这里要求有两种方法)-- 用接口写出抽象方法,再分别由两个实现类分别作为两套方案具体实现;//打印全部学生信息;这里写一个方法存放实现类的方法一:public void info(){scheme.printinfo(students);}//打印学生的平均分;这里写一个方法存放实现类的方法二:public void scores(){scheme.printscore(students);}}

3.准备接口:

package test2;import java.util.ArrayList;public interface Scheme {//方案一://1.打印全部学生信息;//2.打印学生成绩平均分;//----------------------------//方案二://1.打印全部学生信息(+统计男女人数);//2.打印学生(去掉最值后的)成绩平均分(挑出最高分,最低分);void printinfo(ArrayList<Student> students);void printscore(ArrayList<Student> students);
}

4.准备两个实现类----两个方案:分别重写接口的方法

package test2;import java.util.ArrayList;public class Scheme1 implements Scheme{//1.打印全部学生信息;//2.打印学生成绩平均分;@Overridepublic void printinfo(ArrayList<Student> students) {System.out.println("====班级学生全部信息===");for (int i = 0; i < students.size(); i++) {Student s = students.get(i);System.out.println("姓名:" + s.getName());System.out.println("性别:" + s.getSex());System.out.println("分数:" + s.getScore());System.out.println("-------------------------");}}@Overridepublic void printscore(ArrayList<Student> students) {System.out.println("======班级成绩======");double sum = 0;for (int i = 0; i < students.size(); i++) {Student s = students.get(i);sum += s.getScore();}double ave = sum/students.size();System.out.println(ave);System.out.println("------------------------------");}
}
package test2;import java.util.ArrayList;public class Scheme2 implements Scheme{//1.打印全部学生信息(+统计男女人数);//2.打印学生(去掉最值后的)成绩平均分(挑出最高分,最低分);@Overridepublic void printinfo(ArrayList<Student> students) {System.out.println("====班级学生全部信息===");int countman = 0,countwoman = 0;for (int i = 0; i < students.size(); i++) {Student s = students.get(i);if (s.getSex() == '男') countman++;else countwoman++;System.out.println("姓名:" + s.getName());System.out.println("性别:" + s.getSex());System.out.println("分数:" + s.getScore());System.out.println("-------------------------");}System.out.println("男生人数为:" + countman);System.out.println("女生人数为:" + countwoman);}@Overridepublic void printscore(ArrayList<Student> students) {System.out.println("======班级成绩======");double sum = 0;double max = students.get(0).getScore(),min = students.get(0).getScore();for (int i = 0; i < students.size(); i++) {Student s = students.get(i);sum += s.getScore();if(max<s.getScore())  max = s.getScore();if (min<s.getScore())  min = s.getScore();}sum -= (max+min);double ave = sum/(students.size()-2);System.out.println(ave);System.out.println("------------------------------");}
}

5.准备测试类Test:创建学生管理对象

package test2;public class Test {public static void main(String[] args) {Class command = new Class();command.info();command.scores();}
}

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

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

相关文章

转转基于MQ的分布式重试框架设计方案

文章目录 1 背景2 方案3 效果4 可选项5 注意事项6 总结 1 背景 在分布式场景下&#xff0c;为了保障系统的可用性和数据的最终一致性&#xff0c;采用基于消息队列&#xff08;MQ&#xff09;的重试机制是一种常见的解决方案。伪代码如下&#xff1a; /*** 需要保证最终一致性…

phpstudy安装并运行redis

对于一个菜鸟来说&#xff0c;任何一个小步骤都可能研究半天&#xff0c;比如“phpstudy安装并运行redis”这一问题&#xff0c;解决好后第一时间记录下来&#xff0c;方便日后查看&#xff0c;也为遇到同样困难的小伙伴提供个参考&#xff01; 一、phpstudy安装redis 1.打开…

打车代驾APP小程序开发功能有哪些?

随着移动互联网的快速发展&#xff0c;越来越多的人开始使用网约车服务。开发一个网约车、打车、叫车系统已经成为了市场的热门需求。 随着城市化进程的加速和人们出行方式的多样化&#xff0c;传统的公共交通方式已经无法满足人们的出行需求。同时&#xff0c;私家车拥有成本也…

【计算机视觉】万字长文详解:卷积神经网络

以下部分文字资料整合于网络&#xff0c;本文仅供自己学习用&#xff01; 一、计算机视觉概述 如果输入层和隐藏层和之前一样都是采用全连接网络&#xff0c;参数过多会导致过拟合问题&#xff0c;其次这么多的参数存储下来对计算机的内存要求也是很高的 解决这一问题&#x…

PostgreSql和Oracle的事务机制区别以及对程序的影响

前言 几年前IT信息产业的一些核心技术包括架构、产品以及生态都是国外制定&#xff0c;然而自从“遥遥领先”公司被制裁后&#xff0c;国家开始大力支持信息产业“新基建”&#xff0c;自2020年开始市场上涌现出了大量的国产化软件&#xff0c;就国产化数据库而言我所在的公司…

辽宁链家新房数据采集与可视化实现

摘 要 网络爬虫也叫做网络机器人&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取网络信息&#xff0c;进行数据信息的采集与整理的程序或者脚本。随着海量数据的出现&#xff0c;如何快速有效的获取到我们想要的数据成为难题。以房源信息为例&#xff0c;该文使用Pyt…

做虾皮Shopee想高效发货?EasyBoss ERP的这个功能你不能错过!

随着业务的发展&#xff0c;许多Shopee、Lazada卖家的店铺订单量逐渐增大、仓库商品的SKU也越来越多。在这种情况下&#xff0c;一些卖家会选择采用人海战术来提高拣货、发货的效率。效率提高的同时&#xff0c;也意味着企业的用人成本的增加&#xff01; 那么&#xff0c;如何…

在windows和Linux中的安装 boost 以及 安装 muduo

二、安装boost boost官网&#xff1a;boost官网 我下载的boost版本&#xff1a; windows:boost_1_84_0.ziplinux:boost_1_84_0.tar.gz 2.1 在windows中安装boost和测试 &#xff08;1&#xff09;在windows中&#xff0c;解压这个压缩包boost_1_84_0.zip&#xff0c;路径为…

【力扣经典面试题】189. 轮转数组

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 …

免费的ppt网站分享

前言 相信大学生们深有体会&#xff0c;对于学校而言&#xff0c;好像是任何活动都需要我们做ppt&#xff0c;当你拿着自己辛苦做的ppt去展示现场的时候&#xff0c;你看到别人的ppt比你的还好&#xff0c;此时心情就是毙&#xff0c;当你知道人家不过是仅仅的1个小时不到就完成…

Java编程练习之类的封装

1.把一个Student类封装起来&#xff0c;模拟一个转校生转入新学校后为其制作学生信息的过程。运行结果如下&#xff1a; package zhtestdemo; import java.util.Scanner; import java.text.DecimalFormat; public class demo { //创建类&#xff0c;类名叫demo; private Stud…

使用阿里云的IDaaS实现知行之桥EDI系统的单点登录

&#xff0c;在开始测试之前&#xff0c;需要确定用哪个信息作为“登陆用户的ID字段”。 这个字段用来在完成SSO登陆之后&#xff0c;用哪个信息将阿里云IDaaS的用户和知行之桥EDI系统的用户做对应。这里我们使用了 phonenumber 这个自定义属性。需要在阿里云做如下配置&#x…

c++阶梯之引用与内联函数

1. 引用 1.1 引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 语法 类型& 引用变量名(对象名) 引用实体; 示例 很显然&#xff0c;在下面这…

stm32--simulink开发之--timer的学习,硬件输入中断,触发事件

总体的参考链接是&#xff1a; https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ref/timer.html 输入&#xff1a; 1&#xff0c;配置项&#xff1a;Enable frequency input 缩写&#xff1a;freq conunt 说明&#xff1a;“freq count — Frequency…

2024热门游泳耳机排行榜,精选四款游泳耳机品牌

在追求健康生活的今天&#xff0c;游泳成为了许多人健身的首选活动之一。而为了让游泳体验更加愉悦&#xff0c;选择一款适合的游泳耳机显得尤为重要。这不仅能够为游泳者提供动感的音乐&#xff0c;缓解游泳过程中的疲劳感&#xff0c;同时还有助于提高游泳效率。在市场上琳琅…

中文计算机自学指南:打开全栈开发之门 | 开源日报 No.161

PKUFlyingPig/cs-self-learning Stars: 40.3k License: MIT cs-self-learning 是一个计算机自学指南。 该项目旨在提供一本完整的计算机自学指南&#xff0c;帮助初学者通过优质资源快速成长为全能程序员。 主要功能和核心优势包括&#xff1a; 提供丰富的开源课程资源支持多…

案例三:U盘提示格式化?3种方法帮你拯救它

在U盘的使用过程中最尴尬的情况就是遇到“无法打开&#xff0c;需要进行格式化”的提示。此时&#xff0c;我们如何才能在不破坏内部数据的情况下&#xff0c;挽救这个U盘呢&#xff1f; 小编今天就和说3个方法&#xff0c;可以用来解决U盘“无法打开&#xff0c;需要进行格式化…

工作流框架Activiti

工作流框架activiti 实现入住管理&#xff0c;审批流。 实现入退住&#xff0c;涉及多个表单的提交和多个角色的审核&#xff0c;若要实现这些流程的开发&#xff0c;最好的技术选型是使用工作流技术。 工作流(Work Flow)&#xff1a;是一项将系统任务或操作抽取&#xff0c…

Windows10更新失败 错误 0x80070643、KB5034441的解决方法之二

Windows10更新失败 错误 0x80070643、KB5034441 在知乎Windows10更新失败 错误 0x80070643、KB5034441的原因分析和几个解决方法 - 知乎 参考文章进行操作&#xff0c;更详细信息自己看上面链接。 我电脑的硬盘是mbr格式&#xff0c;而且没有划分恢复分区。 Microsoft Windo…

nop-entropy可逆计算入门(1)

第1步&#xff1a;从大佬的gitee&#xff1a;https://gitee.com/canonical-entropy/nop-entropy下载源码&#xff0c;进行本地编译&#xff0c;具体编译看项目下的readme,想偷懒的可以下载我编译后的jar&#xff0c;放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV…