Java--接口

文章目录

  • 主要内容
  • 一.teacher&student
      • 1.源代码
          • 代码如下(示例):
      • 2.结果
  • 二.shape
      • 1.源代码
          • 代码如下(示例):
      • 2.结果
  • 三.生物、动物、人
      • 1.源代码
          • 代码如下(示例):
    • 2.结果
  • 总结

主要内容

一.teacher&student

学校中有老师和学生两类人,而在职研究生即是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。
1)设计两个信息管理接口StudentMageInterface和TeacherMageInterface。
其中StudentMageInterface接口包括setFee()方法和 getFee方法,分别用于设置和获取学生的学费; TeacherMageInterface接口包括setPay方法和 getPay方法,分别用于设置和获取教师的工资
2)定义一个研究生类 Graduate,实现StudentInterface接口和TeacherMageInterface接口,它定义的成员变量有name,sex,age,fee,pay。
3)创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输入“provide a loan”的信息。

1.源代码

代码如下(示例):
public interface StudentInterface {
 // 设置学生的学费
 public abstract void setFee(double fee);
 // 获取学生的学费
 public abstract void getFee(double fee);
}
public interface TeacherInterface {
 // 设置教师的工资
 public abstract void setPay(double pay);
 // 获取教师的工资
 public abstract void getPay(double pay);
}
package test;
import java.util.Scanner;
public class Graduate implements StudentInterface,TeacherInterface{
 // 成员变量
 String name;
 String sex;
 int age;
 double fee;
 double pay;
 // 实现接口中的抽象方法
 @Override
 public void setPay(double pay) {
 this.pay = pay * 12;
 System.out.println("你的年收入为:" + this.pay);
 }
 // 实现接口中的抽象方法
 @Override
 public void getPay(double pay) {
 this.pay = pay * 12;
 System.out.println("你的年收入为:" + this.pay);
 }
 // 实现接口中的抽象方法
 @Override
 public void setFee(double fee) {
 this.fee = fee;
 System.out.println("你的学费设置为:" + this.fee);
 }
 // 实现接口中的抽象方法
 @Override
 public void getFee(double fee) {
 this.fee = fee;
 System.out.println("你的学费为:" + this.fee);
 }
 /**
 * 是否要贷款
 * @return
 */
 public boolean Loan(){
 if ((this.pay - this.fee) < 2000) {
 System.out.println("你的年收入" + this.pay + ",减去学费" + 
this.fee + "等于" + (this.pay - this.fee));
 return true;
 }
 System.out.println("你的年收入" + this.pay + ",减去学费" + 
this.fee + "等于" + (this.pay - this.fee));
 return false;
 }
 public static void main(String[] args) {
 // 创建一个研究生对象
 Graduate graduate = new Graduate();
 // 研究生对象的初始化
 graduate.name = "zhangsan";
 System.out.println("你好:" + graduate.name);
 // 设置月工资
 Scanner scanner = new Scanner(System.in);
 System.out.println("请输入你的月工资:");
 double pay = scanner.nextDouble();
 graduate.setPay(pay);
 // 设置学费
 System.out.println("请输入你的学费:");
 double fee = scanner.nextDouble();
 graduate.setFee(fee);
 // 判断是否需要贷款
 boolean flag = graduate.Loan();
 if (flag) {
 System.out.println("provide a loan(需要贷款)");
 }else {
 System.out.println("自给自足,丰衣足食");
 }
 }
}

2.结果

在这里插入图片描述

二.shape

1.定义 shape接口,包含求面积和求周长的方法;
2. 定义 Circle类、Rectangle类、Square类;
3. 要求Circle类和 Rectangle类实现 shape接口,Square类继承 Rectangle 类;

1.源代码

代码如下(示例):
package test;
abstract class Shape {
 abstract double getArea();
}
class Rectangle extends Shape{
 double Hight;
 double Wide;
 public Rectangle(double hight, double wide) {
 Hight = hight;
 Wide = wide;
 }
 @Override
 double getArea() {
 return Hight*Wide/2;
 }
}
class Circle extends Shape{
 int Radius;
 public Circle(int radius) {
 Radius = radius;
 }
 @Override
 double getArea() {
 return Radius*Radius* Math.PI;
 }
}
public class ShapeTest {
 public static void main(String[] args) {
 Rectangle rectangle=new Rectangle(6,6);
 Circle circle=new Circle(5);
 System.out.println("矩形面积="+rectangle.getArea());
 System.out.println("圆形面积="+circle.getArea());
 }
}

2.结果

在这里插入图片描述

三.生物、动物、人

定义生物,动物,人三个接口
生物:会呼吸的抽象方法
动物:雌雄,吃
人:思考,学习
一个类,实现三个接口的抽象方法

1.源代码

代码如下(示例):
package test;
public abstract class Biology {
 public abstract void eat();
 public abstract void sex();
 public abstract void think();
 public abstract void learn();
}
class Animal extends Biology{
 public Animal() {
 }
 @Override
 public void eat() {
 System.out.println("动物吃食物");
 }
 @Override
 public void sex() {
 System.out.println("动物有雌有雄");
 }
 @Override
 public void think() {
 System.out.println("动物可以想");
 }
 @Override
 public void learn() {
 System.out.println("动物可以学习");
 }
}
class Bird extends Biology{
 public Bird() {
 }
 @Override
 public void eat() {
 System.out.println("鸟能吃");
 }
 @Override
 public void sex() {
 System.out.println("鸟也有雌雄");
 }
 @Override
 public void think() {
 System.out.println("鸟可以思考迁徙");
 }
 @Override
 public void learn() {
 System.out.println("鸟能渣渣叫");
 }
}
class Human extends Biology{
 public Human() {
 }
 @Override
 public void eat() {
 System.out.println("人是杂食动物");
 }
 @Override
 public void sex() {
 System.out.println("人有男有女");
 }
 @Override
 public void think() {
 System.out.println("人的可以思考,大脑十分活跃");
 }
 @Override
 public void learn() {
 System.out.println("人类会学习很多知识");
 }
}
class All{
 public static void main(String[] args) {
 Human human=new Human();
 human.eat();
 human.sex();
 human.learn();
 human.think();
 Animal animal=new Animal();
 animal.eat();
 animal.sex();
 animal.learn();
 animal.think();
 Bird bird=new Bird();
 bird.eat();
 bird.think();
 bird.sex();
 bird.learn();
 }
}

2.结果

在这里插入图片描述


总结

以上是今天要讲的内容,学到了接口。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源项目CuteSqlite开发笔记(八):Windows 64位/32位使用GetWindowLongPtr钩子函数

需求描述 在开发CuteSqlite的时候&#xff0c; 有一个功能需要实现&#xff0c;鼠标移到WTL::CStatic上后&#xff0c;发送消息通知CToolTipCtrl弹出。 遇到问题 WTL::CStatic控件没有相应 WM_MOUSEMOVE 消息&#xff0c;需要返回一个HTCLIENT消息来让窗口处理函数执行 WM_MO…

web3:B站chainlink课程第五课Wsl安装ubuntu虚拟机

坑了我好久。 https://learn.microsoft.com/zh-cn/windows/wsl/install-manual 按照微软给的这个手动安装的方式来&#xff0c;别想在线了&#xff0c;反正来看这个的肯定是直接 wsl --install成功不了的选手。 注意&#xff01; 步骤6别从Microsoft Store 下载&#xff0c;…

C#winform上位机开发学习笔记9-串口助手的多窗体功能添加

1.功能描述 涉及子窗体的创建过程&#xff0c;子窗体的调用操作&#xff0c;子窗体与主窗体的显示位置设置&#xff0c;子窗体随主窗体移动 2.代码部分 步骤1&#xff1a;新建button并修改Text 步骤2&#xff1a;在现工程中新建项目 步骤3&#xff1a;选择窗体修改窗体名称 …

SCCB接口

文章目录 概述引脚传输时序起始/结束信号三线模式两线模式 传输周期3阶段写传输周期2阶段写传输周期2阶段读传输周期阶段一 ID Address阶段二 子地址/读数据阶段三 写数据 SCCB与IIC区别未完待续(还有代码&#xff09;... 概述 SCCB&#xff08;Serial Camera Control Bus&…

【极数系列】Flink 初相识(01)

# 【极数系列】Flink 初相识&#xff08;01&#xff09; 引言 Flink官网&#xff1a;https://flink.apache.org/ Flink版本&#xff1a;https://flink.apache.org/blog/ Flink文档&#xff1a;https://ci.apache.org/projects/flink/flink-docs-release-1.12/ Flink代码库…

Redis(五)管道

文章目录 官网总结Pipeline与原生批量命令对比Pipeline与事务对比使用Pipeline注意事项 官网 https://redis.io/docs/manual/pipelining/ Pipeline是为了解决RTT往返回时&#xff0c;仅仅是将命令打包一次性发送对整个Redis的执行不造成其它任何影响 总结 Pipeline与原生批量…

Med-YOLO:3D + 医学影像 + 检测框架

Med-YOLO&#xff1a;3D 医学影像 检测框架 提出背景设计思路网络设计训练设计讨论分析 魔改代码&#xff1a;加强小目标检测总结 提出背景 论文链接&#xff1a;https://arxiv.org/abs/2312.07729 代码链接&#xff1a;https://github.com/JDSobek/MedYOLO 提出背景&…

flutter设置windows是否显示标题栏和状态栏和全屏显示

想要让桌面软件实现全屏和不显示状态栏或者自定义状态栏&#xff0c;就可以使用window_manager这个依赖库&#xff0c;使用起来还是非常方便的&#xff0c;可以自定义显示窗口大小和位置&#xff0c;还有设置标题栏是否展示等内容&#xff0c;也可以设置可拖动区域。官方仓库地…

<C++>STL->list

list的介绍 list list是一个类模板&#xff0c;第一个模板参数为存储数据类型&#xff1b;第二个模板参数为空间适配器list是一个可以在常数时间内完成任意位置的插入和删除的顺序容器。list容器是以双链表的形式实现的&#xff1b;双链表可以将其包含的每个元素存储在不同且…

Java开发工具:IntelliJ IDEA 2023 for Mac中文激活

IntelliJ IDEA 2023是一款由JetBrains开发的强大的集成开发环境&#xff08;IDE&#xff09;软件&#xff0c;适用于多个编程语言。它旨在提高开发人员的生产力和代码质量。 软件下载&#xff1a;Java开发工具&#xff1a;IntelliJ IDEA 2023 for Mac中文激活 IntelliJ IDEA 20…

Docker入门学习

1、docker简介 1.1什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目&#xff0c;它是基于 dotCloud 公司多年云服务技术的一次革新&#xff0c;并于 2013 年 3 月以 Apache 2.0 授权协议开源&#xff0c;主要项目代码在 GitH…

Maven工程继承和聚合关系

1. Maven工程继承关系 1.1 继承概念 Maven 继承是指在 Maven 的项目中&#xff0c;让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息&#xff0c;简化项目的管理和维护工作。 1.2 继承作用 在父工程中统一管理项目中的依赖信息。 …

Kafka(三)【Broker 存储】

目录 前言 Kafka Broker 1、工作流程 1.1、Zookeeper 存储的 Kafka 信息 1.2、Kafka Broker 的总体工作流程 1.3、Broke 重要参数 2、Kafka 副本 2.1、副本基本信息 2.2、Keader 选举流程 2.3、Leader 和 Follower 的故障处理细节 Follower 故障 Leader 故障&#x…

GAMMA处理数据(五)

1、差分干涉 命令&#xff1a;SLC_diff_int 2、相干性估计 命令&#xff1a;cc_ad 3、地形相位去除 因为这个错误&#xff1a;浪费了大把时间&#xff0c;到处百度&#xff0c;bing&#xff0c;怀疑是脑子糊涂了&#xff0c;我的参数输入错误了&#xff0c;命令叫输入par文件…

智能合约:Web3的商业合作新模式

随着区块链技术的发展&#xff0c;智能合约在Web3时代崭露头角&#xff0c;成为商业合作中的全新模式。这一技术不仅重新定义了商业合作的方式&#xff0c;还为各行各业带来了更加高效、透明和安全的商务交往。本文将深入探讨智能合约在Web3时代的崭新商业合作模式&#xff0c;…

【一站解决您的问题】mac 利用命令升级nodejs、npm、安装Nodejs的多版本管理器n、nodejs下载地址

一&#xff1a;下载nodejs 官网地址&#xff0c;点击下载稳定版 https://nodejs.org/en 如果官网下载特别慢&#xff0c;可以点击这个地址下载 点击这里 https://nodejs.cn/download/current/ 安装完成后&#xff0c;就包含了nodejs 和 npm。此时您的版本就是下载安装的版本…

Redis 面试题 | 05.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

STM32WLE5JC 低功耗模式

低功耗模式 该器件支持多种功耗模式&#xff0c;以实现低功耗、短启动时间、可用外设和可用唤醒源之间的最佳折衷。 默认情况下&#xff0c;在系统或上电复位后&#xff0c;微控制器处于运行模式&#xff0c;范围1&#xff1a; 休眠模式&#xff1a;CPU时钟关闭&#xff0c;…

使用PSIM软件生成DSP28335流水灯程序

最近在学习DSP28335芯片&#xff0c;然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片&#xff0c;于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…

mockjs使用(2)

mockjs使用&#xff08;1&#xff09; 4、Mock 4.1 Mock.mock() 根据数据模版生成模拟数据 Mock.mock( rurl?, rtype?, template|function(options) )问号代表该参数不必填 4.1.1 各参数及其默认值 rurl: 不必填。表示需要拦截的URL&#xff0c;可以使URL字符串或URL正…