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. PolarDB-X源码解读系列:DML之Insert流程

    简介: Insert类的SQL语句的流程可初略分为:解析.校验.优化器.执行器.物理执行(GalaxyEngine执行).本文将以一条简单的Insert语句通过调试的方式进行解读. 在阅读本文之前,强 ...

  2. 专访香侬科技:致力于让世界听到中文NLP的声音

    ​像所有的创业者一样,香侬科技的初创团队胸怀梦想,期待有一天当人们提起香侬的时候,除了"信息论之父",还能想起来有一家用技术在链接大千世界的科技公司--香侬科技. 新生的香侬科技选 ...

  3. 基于 Observable 构建前端防腐策略

    ​简介:To B 业务的生命周期与迭代通常会持续多年,随着产品的迭代与演进,以接口调用为核心的前后端关系会变得非常复杂.在多年迭代后,接口的任何一处修改都可能给产品带来难以预计的问题.在这种情况下,构 ...

  4. ACK正式支持对基于Alibaba Cloud Linux操作系统的集群进行等保加固

    简介: 我们对基于Alibaba Cloud linux操作系统的ACK集群进行等保加固,意味着阿里云在云产品开发和交付的过程中将安全作为重要组成部分,将合规融入到产品的"血液"中 ...

  5. 推文科技:AI解决方案助力内容出海

    ​ 2017年,推文科技成立,推出业内针对网络文学的AI系统,助推网文批量出海.2018年,阿里云上线海外可用区,推文科技开始与阿里云合作. 创业宣言 创业是一件用行动去实践相信的事情,也许有一天,我 ...

  6. [FAQ] 适用于 macOS / Arm64 (M1/M2) 的 VisualBox

      使用与 Windows.Linux.macOS 的x86架构的一般在下面地址中下载: Download VisualBox:https://www.virtualbox.org/wiki/Down ...

  7. kubenetes1.26中安装kubesphere3.4版本

    一.安装前环境准备 # kubesphere官网:https://kubesphere.io/zh/docs/v3.4/introduction/what-is-kubesphere/ # 1.kub ...

  8. 陪玩app小程序H5开发制作多少钱-软件开发,源码交付,永久售后.-陪玩线下陪玩软件搭建APP(系统、平台、源码)-游戏陪玩系统APP派单大厅H5社交圈子+多人聊天室小程序

    线下陪玩APP平台,如何防止陪玩师接私单? 线下陪玩APP平台如果不解决陪玩师接私单的问题,那么你的陪玩平台一定赚不到钱! 为什么这么说呢?平台花费10万引流来1000个顾客,每个顾客的引流成本就是1 ...

  9. blazor中的PageTitle输出keywords和description,自定义组件

    在blazor的PageTitle中不具备输出keywords和description的功能,而如果直接使用<mate>标签,输出中文时会变成乱码,所以我给大家推介下面的代码解君愁: 1 ...

  10. go 操作 Excel

    文档地址: https://xuri.me/excelize/zh-hans/ package main import ( "fmt" "github.com/xuri/ ...