work09
day10作业:
第一题:
定义一个接口Animal,包含:
1.抽象方法: run()
2.默认方法: breathe(),输出"动物会呼吸",同时调用静态方法 eat(),私有方法: sleep()
3.静态方法: eat(),输出"动物都要吃东西"
4.私有方法: sleep(),输出"动物都要休息"
package com.hp.work09;
public interface Animal {
public abstract void run();
public default void breathe(){
System.out.println("动物会呼吸");
eat();
}
public static void eat(){
System.out.println("动物都要吃东西");
}
}
定义Dog类实现Animal接口,实现抽象方法run(),输出"狗跑得飞快"
在测试类中创建Dog类的对象d,通过对象调用run()方法和breathe()方法,打印出如下效果:
狗跑得飞快
动物会呼吸
动物都要吃东西
动物都要休息
package com.hp.work09;
public class Dog implements Animal {
@Override
public void run() {
System.out.println("狗跑得飞快");
}
}
package com.hp.work09;
public class Test {
public static void main(String[] args) {
Dog dog=new Dog();
dog.run();
dog.breathe();
}
}
第二题:
定义一个接口Phone,包含:
1.抽象方法: playGame()
2.默认方法: sendMessage(),输出"发短信"
3.静态方法: call(),输出"打电话"
package com.hp.work0902;
public interface Phone {
public abstract void playGame();
public default void sendMessage(){
System.out.println("发短信");
}
public static void call(){
System.out.println("打电话");
}
}
定义IPhone类实现Phone接口,实现抽象方法playGame(),输出"打王者农药,吃鸡"
重写默认方法sendMessage(),输出"发彩信"
package com.hp.work0902;
public class IPhone implements Phone{
@Override
public void playGame() {
System.out.println("打王者农药,吃鸡");
}
@Override
public void sendMessage() {
System.out.println("发彩信");
}
}
在测试类中,编写代码,打印出如下语句(每句话都需调用上述方法打印):
打电话
打王者农药,吃鸡
发彩信
package com.hp.work0902;
public class Test {
public static void main(String[] args) {
IPhone iPhone=new IPhone();
iPhone.playGame();
iPhone.sendMessage();
Phone.call();
}
}
第三题:
定义一个接口Animal,包含:
1.抽象方法:run()
2.默认方法: sleep(),输出"动物会休息"
package com.hp.work0903;
public interface Animal {
public abstract void run();
public default void sleep(){
System.out.println("动物会休息");
}
}
定义一个Dog类,实现Animal接口,
实现抽象方法:run(),输出"如脱缰的野狗一样奔跑"
定义自己特有的方法: eat(),输出"狗吃屎"
package com.hp.work0903;
public class Dog implements Animal {
@Override
public void run() {
System.out.println("如脱缰的野狗一样奔跑");
}
public void eat(){
System.out.println("狗吃屎");
}
}
定义一个Cat类,实现Animal接口,
实现抽象方法:run(),输出"奔跑的猫毛都被撸秃了"
定义自己特有的方法: catchMouse(),输出"猫抓老鼠"
package com.hp.work0903;
public class Cat implements Animal{
@Override
public void run() {
System.out.println("奔跑的猫毛都被撸秃了");
}
public void catchMouse(){
System.out.println("猫抓老鼠");
}}
在测试类中定义如下方法:
public static void printAnimal(Animal a){}
要求在方法中编写代码实现如下功能:
在主方法中:
1. Animal b = new Dog();
调用方法printAnimal()传入b对象,能在控制台输出:
如脱缰的野狗一样奔跑
动物会休息
狗吃屎
1. Animal c = new Cat();
调用方法printAnimal()传入c对象,能在控制台输出:
奔跑的猫毛都被撸秃了
动物会休息
猫抓老鼠
package com.hp.work0903;
public class Test {
public static void main(String[] args) {
Animal b=new Dog();
printAnimal(b);
Animal c=new Cat();
printAnimal(c);
}
public static void printAnimal(Animal a){
a.run();
a.sleep();
if (a instanceof Dog){
((Dog) a).eat();
}else if (a instanceof Cat) {
((Cat) a).catchMouse();
}
}
}
第四题:
根据要求完成以下功能:
① 定义接口Bluetooth,要求如下:
定义抽象方法: void btFunction()
定义默认方法: void connecting(),要求:输出"可以连接WIFI"
package com.hp.work0904;
public interface Bluetooth {
public abstract void btFunction();
public default void connecting(){
System.out.println("可以连接WIFI");
}
}
② 定义抽象类Phone,要求如下:
包含空参、满参构造和以下成员变量
名称name( String 型)
生成所有成员变量set/get方法
定义抽象方法:void playMusic(Song song)
package com.hp.work0904;
public abstract class Phone {
String name;
public Phone(String name) {
this.name = name;
}
public Phone() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void playMusic(Song song);
}
③定义类Song
包含空参、满参构造和以下成员变量
歌手 singer(String 型)
歌名 name( String 型)
生成所有成员变量set/get方法
package com.hp.work0904;
public class Song {
String singer;
String name;
public Song(String singer, String name) {
this.singer = singer;
this.name = name;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
④ 定义类IPhone,要求如下:
继承抽象类 Phone,实现接口 Bluetooth
构造方法包括:空参构造和满参构造方法(String)
重写抽象方法:
void btFunction(),要求:输出"支持WIFI功能"
void playMusic(Song song),要求:输出打印"XXX手机正在播放YYY唱的ZZZ"
PS:XXX是Phone类中的 name属性值,YYY是Song 类中的 singer属性值,ZZZ是Song 类中的 name属性值
package com.hp.work0904;
public class IPhone extends Phone implements Bluetooth {
public IPhone(String name) {
super(name);
}
public IPhone() {
}
@Override
public void btFunction() {
System.out.println("支持WIFI功能");
}
@Override
public void playMusic(Song song) {
System.out.println(name+"手机正在播放"+song.singer+"唱的"+song.name);
}
}
⑤ 定义测试类Test,在main方法实现以下功能:
创建并初始化一个IPhone 对象phone和一个Song 对象s,调用phone的 btFunction()、connecting()和playMusic(Song song)方法,打印如下:
支持WIFI功能
可以连接WIFI
华为手机正在播放周杰伦唱的菊花残
package com.hp.work0904;
public class Test {
public static void main(String[] args) {
IPhone phone=new IPhone("华为");
Song s=new Song("周杰伦","菊花残");
phone.btFunction();
phone.connecting();
phone.playMusic(s);
}
}
第五题:
根据要求完成以下功能:
① 定义接口Study,要求如下:
定义抽象方法: void studyLine(Line line)
定义默认方法: void info(),要求:依次调用stu1(),stu2()
定义私有方法: void stu1 (),要求:输出"好好练习,天天向上"
void stu2 (),要求:输出"镜头拍烂,月薪百万"
package com.hp.work0905;
public interface Study {
public abstract void studyLine(Line line);
public default void info(){
stu1();
stu2();
}
static void stu2(){
System.out.println("好好练习,天天向上");
}
static void stu1(){
System.out.println("镜头拍烂,月薪百万");
}
}
②定义类Line,包含空参、满参构造和以下成员变量
基础班学习 basicClass(String 型)
就业班学习 emplymentClass(String 型)
生成所有成员变量set/get方法
定义成员方法:void printLine(),要求:输出"练习路线,基础班学习:xxx,就业班学习:yyy",
PS: xxx为变量basicClass值,yyy为变量emplymentClass值
package com.hp.work0905;
public class Line {
String basicClass;
String emplymentClass;
public Line(String basicClass, String emplymentClass) {
this.basicClass = basicClass;
this.emplymentClass = emplymentClass;
}
public Line() {
}
public String getBasicClass() {
return basicClass;
}
public void setBasicClass(String basicClass) {
this.basicClass = basicClass;
}
public String getEmplymentClass() {
return emplymentClass;
}
public void setEmplymentClass(String emplymentClass) {
this.emplymentClass = emplymentClass;
}
public void printLine(Line line){
System.out.println("练习路线,基础班学习:"+basicClass+",就业班学习:"+emplymentClass);
}
}
③定义类Student,包含空参、满参构造和以下成员变量
姓名 name(String 型)
年龄 age(int型)
生成所有成员变量set/get方法
定义成员方法:void studying(Study sy),要求:输出“xxxx练习中”,然后在方法内依次调用info(),studyLine (Line line)
PS:xxx为变量name值,参数line需要自行创建并初始化变量basicClass与 emplymentClass
package com.hp.work0905;
public class Student {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
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 studying(Study sy){
System.out.println(name+"练习中");
sy.info();
Line line=new Line("JAVASE","JAVAEE");
sy.studyLine(line);
}
}
④ 定义测试类Test,在main方法实现以下功能:
创建并初始化一个Student对象stu,调用方法 studying(Study sy)
sy为Study的实现类,需要实现studyLine (Line line)抽象方法,实现要求:调用参数line的printLine()方法;
示例如下:
苍井空练习中
好好练习,天天向上
镜头拍烂,月薪百万
学习路线,基础班学习:JAVASE,就业班学习:JAVAEE
package com.hp.work0905;
public class Test {
public static void main(String[] args) {
Student stu=new Student("苍井空",18);
Study sy = new Study() {
@Override
public void studyLine(Line line) {
line.printLine(line);
}
};
stu.studying(sy);
}
}
work09的更多相关文章
- java学习笔记(详细)
java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同系统上要安装对应的虚 ...
随机推荐
- 最佳实践|从Producer 到 Consumer,如何有效监控 Kafka
简介: 对于运维人而言,如何安装维护一套监控系统,或如何进行技术选型,从来不是工作重点.如何借助工具对所需的应用.组件进行监控,发现并解决问题才是重中之重.随着 Prometheus 逐渐成为云原生时 ...
- 多任务学习模型之ESMM介绍与实现
简介:本文介绍的是阿里巴巴团队发表在 SIGIR'2018 的论文<Entire Space Multi-Task Model: An Effective Approach for Estima ...
- 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统
简介: 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持,这意味着从2022年开始,使用CentOS 8的用户,将无法得到来自官方的新硬件支持.bug修复和安全 ...
- Springboot+Prometheus+grafana 制作自己的业务监控
目录 知识储备 系统架构 开始实现 生成业务指标 经典实现方法 自己的实现方案 引入依赖 配置文件 注册自己的指标[我这里用的是guaua格式数据] 写入指标 效果展示 配置prometheus 抓取 ...
- vue项目(cli-3)替换浏览器logo
思路: 根html文件的 <link rel="icon" href="<%= BASE_URL %>favicon.ico">是引入i ...
- vue-单独引入js文件,构造全局方法-取某个范围的随机数(百分比)案例
1.项目下建文件夹commonFunction->random.js 这个js文件内复制代码: export default{ randomPercentage:function(a,b ...
- 07. C语言程序执行流程控制
[有条件执行语句] if esle 语句 if else 语句根据一个条件确定是否执行一段代码,执行条件是一个布尔值,布尔值为true则执行,为false则不执行,同时可以设置不符合条件时执行的语句. ...
- ansible(5)--ansible的script模块
1. script模块 作用:在远程主机运行本地的脚本: 调用格式: -m script -a "/PATH/TO/SCRIPT_FILE": 参数: creates:如果其后跟的 ...
- 教你如何破解虚拟机root密码
一.开机时按e键,即可进入grub编辑界面,光标选择第一条,e表示进入编辑模式. 当机器开机出现如图1所示的kernel菜单后,按e键. 二.将光标移动到以linux开头的行,对图2中标注的位置进行修 ...
- Linux上执行内存中的脚本和程序
在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序. 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一 ...