第九天
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);
}
}