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程序.不同系统上要安装对应的虚 ...
随机推荐
- EasyNLP带你实现中英文机器阅读理解
简介: 本⽂将提供对MacBERT模型的技术解读,以及如何在EasyNLP框架中使⽤MacBERT及其他预训练语言模型,进行中英文机器阅读理解任务的训练与预测. 作者:施晨.黄俊 导读 机器阅读理解是 ...
- bilibili 实时平台的架构与实践
摘要:本文由 bilibili 大数据实时平台负责人郑志升分享,基于对 bilibili 实时计算的痛点分析,详细介绍了 bilibili Saber 实时计算平台架构与实践.本次分享主要围绕以下四个 ...
- 图像检索在高德地图POI数据生产中的应用
简介: 高德通过自有海量的图像源,来保证现实世界的每一个新增的POI及时制作成数据.在较短时间间隔内(小于月度),同一个地方的POI 的变化量是很低的. 作者 | 灵笼.怀迩 来源 | 阿里技术 ...
- Serverless 工程实践 | Serverless 应用开发观念的转变
简介: Serverless 架构带来的除了一种新的架构.一种新的编程范式,还包括思路上的转变,尤其是开发过程中的一些思路转变.有人说要把 Serverless 架构看成一种天然的分布式架构,需要用 ...
- [FE] WebStorm, ESLint: Trailing spaces not allowed
在 WebStorm 中搜索文件 .eslintrc.js 在里面的 rules 项中追加规则: 'no-trailing-spaces' : ['off', { 'skipBlankLines': ...
- ubuntu 防火墙命令
# 防火墙状态,如果输出显示 Status: inactive,表示 UFW 处于禁用状态 sudo ufw status # 关闭防火墙 sudo ufw disable # 启动防火墙 sudo ...
- ESP32 使用LVGL案例
一.完成LVGL移植 在使用LVGL提供的测试案例时,需要先移植LVGL,不明白的小伙伴看我之前的笔记 esp-idf 移植 lvgl8.3.3. 移植完成后的项目文件如下图所示 二.添加需要的测试案 ...
- 开源电子邮件营销平台 listmonk 使用教程
做产品肯定要做电子邮件营销,特别是面向海外的产品,电子邮件营销已成为企业与客户沟通.建立品牌忠诚度和推动销售的重要工具,可以直接接触到目标受众,提供个性化内容,并以相对较低的成本获得可观的投资回报.你 ...
- Linux上执行内存中的脚本和程序
在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序. 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一 ...
- IPv6 — 协议头
目录 文章目录 目录 前文列表 IPv6 协议头格式 扩展报头 前文列表 <IPv6 - 网际协议第 6 版> <IPv6 - 地址格式与寻址模式> IPv6 协议头格式 IP ...