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的更多相关文章

  1. java学习笔记(详细)

    java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同系统上要安装对应的虚 ...

随机推荐

  1. 如何做好技术 Team Leader?

    简介: 作为一个技术TL(Team Leader),除了自身技能,还会面临诸多团队管理上的困难和挑战.如何定义和明确团队的目标?怎样建立优秀的工程文化?让团队长期发挥战斗力和创新能力的核心是什么?本文 ...

  2. 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?

    简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业. Quick BI凭借在增强分析能力上的 ...

  3. 重磅官宣:Nacos2.0 发布,性能提升 10 倍

    简介: 继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态.但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了 Nacos 2.0 的隔代产品设计,时隔 ...

  4. 知乎的 Flink 数据集成平台建设实践

    简介: 本文由知乎技术平台负责人孙晓光分享,主要介绍知乎 Flink 数据集成平台建设实践.内容如下: 1. 业务场景 : 2. 历史设计 : 3. 全面转向 Flink 后的设计 : 4. 未来 F ...

  5. [Go] VsCode 的 Golang 环境设置与代码跳转支持

      终端执行: go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct WIndows下自定义指定 GOPATH 路径 ...

  6. WPF dotnet 6 开启 PM v2 的 DPI 感知 导致触摸线程访问 UI 属性抛异常

    本文记录一个 WPF 在 dotnet 6 的一个已知问题,且此问题我已修复提交给官方仓库.这是一个只有在 dotnet 6 框架下,非 dotnet 5 也非 .NET Core 3.1 也非 .N ...

  7. dotnet OpenXML 继承组合颜色的 GrpFill 属性

    在 OpenXML 的颜色画刷填充,有特殊的填充是 GrpFill 属性,对应 OpenXML SDK 定义的 DocumentFormat.OpenXml.Drawing.GroupFill 类型 ...

  8. STM32中的看门狗

    先复制一段度娘的东西: 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个 ...

  9. 08 ES基本的聚合查询

    目录 按protocol聚合 指定地区,按port聚合 指定地区和时间段,按ip聚合(独立ip 即ip去重) 并且 聚合再求独立ip数 聚合后将聚合结果进行分页的解决办法 子聚合 按protocol聚 ...

  10. 02. rails安装

    rails安装 ruby 1.8.6 对应的rails是2.3.2 Ruby 1.8.7 或 1.9.2 对应的rails 2.3.x ruby1.9.3,对应的rails是3.2.12, ruby2 ...