【接口、多态】小练习
第一题:分析以下需求,并用代码实现
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
1.定义USB接口:
开启功能
关闭功能
2.定义笔记本类:
开机功能
关机功能
定义使用USB设备的功能
要求:既能使用鼠标也能使用键盘,使用USB功能内部调用开启和关闭功能
3.定义鼠标类:
要符合USB接口
4.定义键盘类:
要符合USB接口
5.定义测试类:
创建电脑对象,依次调用开机方法,使用USB设备, 关机方法
打印效果如下:
开机
连接鼠标的USB
断开鼠标的USB
连接键盘的USB
断开键盘的USB
关机
/*
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘1.定义USB接口:开启功能关闭功能2.定义笔记本类:开机功能关机功能定义使用USB设备的功能要求:既能使用鼠标也能使用键盘,使用USB功能内部调用开启和关闭功能3.定义鼠标类:要符合USB接口4.定义键盘类:要符合USB接口5.定义测试类:创建电脑对象,依次调用开机方法,使用USB设备, 关机方法打印效果如下:开机连接鼠标的USB断开鼠标的USB连接键盘的USB断开键盘的USB关机*//*
1.定义USB接口:开启功能关闭功能*/
public interface USB {public abstract void usbon();public abstract void usboff();
}/*
2.定义笔记本类:开机功能关机功能定义使用USB设备的功能要求:既能使用鼠标也能使用键盘,使用USB功能内部调用开启和关闭功能*/
public class Computer {public void run(){System.out.println("开机");}public void off(){System.out.println("关机");}public void useUSB(USB usb){if (usb instanceof Mouse){Mouse m=(Mouse) usb;m.usbon();m.usboff();}else if (usb instanceof Keybroad){Keybroad k=(Keybroad)usb;k.usbon();k.usboff();}}}/*
3.定义鼠标类:要符合USB接口*/
public class Mouse implements USB {@Overridepublic void usbon() {System.out.println("连接鼠标的USB");}@Overridepublic void usboff() {System.out.println("断开鼠标的USB");}
}/*
4.定义键盘类:要符合USB接口*/
public class Keybroad implements USB {@Overridepublic void usbon() {System.out.println("连接键盘的USB");}@Overridepublic void usboff() {System.out.println("断开键盘的USB");}
}//测试类
public class Test {public static void main(String[] args) {Computer c=new Computer();c.run();c.useUSB(new Mouse());c.useUSB(new Keybroad());c.off();}}//控制台开机
连接鼠标的USB
断开鼠标的USB
连接键盘的USB
断开键盘的USB
关机
第二题: 分析以下需求,并用代码实现
1.定义动物类:
属性:
年龄
行为:
喝水,吃东西(吃什么不确定)
2.定义游泳接口:
行为:
游泳方法
3.定义狗类:
行为:
吃饭(啃骨头)和 游泳(狗刨)
4.定义羊类:
行为:
吃饭(羊啃草)
5.定义青蛙类:
行为:
吃饭(吃虫子)和 游泳(蛙泳)
6.定义饲养员类:
行为:
饲养动物:包括吃饭和喝水
7.定义测试类:
创建饲养员对象,饲养员调用三次饲养方法:饲养狗,饲养羊,饲养青蛙
要求:
1.子类重写父类中的吃东西方法
2.要求给狗和青蛙添加游泳的方法(实现游泳接口)
3.饲养员类中定义一个方法,传入动物类对象(父类),
调用吃饭方法,如果有游泳方法也需进行测试
4.打印如下格式的结果:
喝水
狗啃骨头
狗会狗刨游泳
喝水
青蛙吃小虫
青蛙会蛙泳
喝水
羊啃草
/*
1.定义动物类:属性:年龄行为:喝水,吃东西(吃什么不确定)*/
public abstract class Animal {private int age;public void drink(){System.out.println("喝水");}public abstract void eat();public Animal() {}public Animal(int age) {this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}/*
2.定义游泳接口:行为:游泳方法*/
public interface Swimming {public abstract void swimming();
}/*
3.定义狗类:行为:吃饭(啃骨头)和 游泳(狗刨)*/
public class Dog extends Animal implements Swimming{@Overridepublic void eat() {System.out.println("狗啃骨头");}@Overridepublic void swimming() {System.out.println("狗会狗刨游泳");}
}/*
4.定义羊类:行为:吃饭(羊啃草)*/
public class Sheep extends Animal{@Overridepublic void eat() {System.out.println("羊啃草");}
}/*
5.定义青蛙类:行为:吃饭(吃虫子)和 游泳(蛙泳)*/
public class Frog extends Animal implements Swimming{@Overridepublic void eat() {System.out.println("青蛙吃小虫");}@Overridepublic void swimming() {System.out.println("青蛙会蛙泳");}
}/*
6.定义饲养员类:行为:饲养动物:包括吃饭和喝水*/
public class Breeder {public void method(Animal a) {if (a instanceof Dog) {Dog dog = (Dog) a;dog.drink();dog.eat();dog.swimming();}else if (a instanceof Frog){Frog f=(Frog) a;f.drink();f.eat();f.swimming();}else if (a instanceof Sheep){Sheep s=(Sheep) a;s.drink();s.eat();}}
}//测试类
public class Test {public static void main(String[] args) {Breeder b=new Breeder();b.method(new Dog());System.out.println();b.method(new Frog());System.out.println();b.method(new Sheep());}
}//控制台
喝水
狗啃骨头
狗会狗刨游泳喝水
青蛙吃小虫
青蛙会蛙泳喝水
羊啃草
【接口、多态】小练习相关推荐
- go语言----函数 结构体 接口 多态
函数 Go语言 函数是反过来声明 变量类型和 函数返回值 一.一个返回值 package main import "fmt"func max(a int,b int) int { ...
- 类.接口.多态.向上转型.向下转型
一:综述 电脑利用USB接口实现键盘的输入.鼠标的移动 二:代码 USB.java package ClassAndObject;public interface USB {public abstra ...
- 我的学习之路_第二章_接口/多态
接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口.接口是功能的集合 接口不能创建对象 (2)格式: 父接口: public interface Inter { } 子 ...
- 注意,金士顿Kingston KHX-FAN内存散热器,接口是小3pin母头。
注意,金士顿Kingston KHX-FAN内存散热器,接口是小3pin母头. 资料来源: 1. http://www.tweaktown.com/reviews/2805/kingston_hype ...
- 简洁UI自带稳定接口去水印小程序源码
这是一款UI超简洁的一款去水印小程序源码 到底有多简洁呢,小编只能说要多简洁就有多简洁 首先保存视频的时候不会显示下载进度,所以你就会误以为没反应 其实视频已经在下载了,当然啦下载好了以后还是会有下载 ...
- 小程序服务器端端接口,微信小程序:后端服务接口(WordPress)
微信的小程序相当于是一套前端(Frontend)应用的框架,让它变成一个真正能用的 App,我们还得给它提供一个后端服务,或者叫应用后台(Backend).几乎所有的后端应用框架都支持为小程序提供后端 ...
- Java接口,多态,向上转型,向下转型的意义
接口 官方解释: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现 ,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 包含 ...
- 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda
包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...
- java接口和多态应用例题_Java基础进阶 第四天 抽象接口多态
今日任务: 1,能够独立使用抽象类 2,能够独立使用多态 3,能够独立使用接口 4,能够理解适配器设计模式 1. 抽象类 1.1. 抽象类的产生 需求:创建类描述猫和狗的行为: 猫的行为:抓老鼠:吃鱼 ...
- 小程序真机调试访问不了接口_小程序入门
之前写了一个去水印的小程序,详情可查看「短视频去水印工具小程序版-去水印Pro版」一文,我个人对小程序也是从完全陌生到入门阶段,这篇文章就把入门的过程和遇到的问题记录一下. 一.小程序注册 想要开发小 ...
最新文章
- 首次发现:你的大脑“指纹”,全球独一份
- 【软件期刊01】2017-02-22
- js获取上传文件内容
- slice与substring与substr
- 设计师必备|年年都能借鉴的新年Banner设计
- python session模块_Python backend.set_session方法代码示例
- openssh升级sftp_linux搭建sftp(openssh)
- PhoneGap+Xcode6环境配置
- 自由手写体字帖pdf_何某手写体:一款随心所欲充满趣味的日系手写字体 免费商用...
- ubuntu20.04合并拆分pdf
- [硬件]_ELVE_STLINK下载出现nternal command error问题
- 电子书-CHM-上线CS
- 并发编程之:线程池(二)
- 放苗机器人_机自学院苗中华教授团队在集群机器人智能控制研究方面取得重大进展...
- 聊聊这8种单例模式的优缺点
- 以不变应万变的客服代表,让服务体验持续提升
- 飞利浦e570有JAVA吗_飞利浦E570不仅仅是手机还是一款可通话的移动电源
- jquery之购物商城
- 华为认证HCIA H12-811 Datacom数通考试真题题库【带答案刷题必过】【第一部分】
- C++ exit用法详解