work08
day09作业:
必做题:
========================================
第一题:
1.定义一个Animal类,包含如下行为:
eat() 打印"要吃饭"
run() 打印"会跑步"
sleep() 打印"要睡觉"
2.定义一个Dog类,继承Animal类,重写eat(),run()方法
定义自己特有的行为 :
cry() 打印"狗会汪汪叫"
3.定义测试类DogTest, 创建Dog的对象,依次调用eat(),run(),sleep(),cry()方法,打印出如下语句
狗要吃那啥
狗跑的如脱缰的野狗
要睡觉
狗会汪汪叫
1 package com.hp.work08; 2 3 public class Animal { 4 public void eat(){ 5 System.out.println("要吃饭"); 6 } 7 public void run(){ 8 System.out.println("会跑步"); 9 } 10 public void sleep(){ 11 System.out.println("要睡觉"); 12 } 13 }
package com.hp.work08; public class Dog extends Animal{ public void eat(){ System.out.println("狗要吃那啥"); } public void run(){ System.out.println("狗跑的如脱缰的野狗"); } public void cry(){ System.out.println("狗会汪汪叫"); } }
1 package com.hp.work08; 2 3 public class DogTest { 4 public static void main(String[] args) { 5 Dog dog=new Dog(); 6 dog.eat(); 7 dog.run(); 8 dog.sleep(); 9 dog.cry(); 10 11 } 12 }
第二题:
1.定义一个Phone抽象类,包含如下方法:
普通方法: call() 输出:"打电话"
普通方法: sendMessage() 输出:"发短信"
抽象方法: playGame();
1 package com.hp.work08; 2 3 public abstract class Phone { 4 public void call(){ 5 System.out.println("打电话"); 6 } 7 public void sendMessage(){ 8 System.out.println("发短信"); 9 } 10 public abstract void playGame(); 11 }
2.定义一个IPhone类,继承Phone类
重写sendMessage()方法,输出:"发彩信"
实现playGame()方法,输出:"打王者农药"
定义自己特有的行为 :
siri() 打印"人工智障"
1 package com.hp.work08; 2 3 public class IPhone extends Phone { 4 public void sendMessage(){ 5 System.out.println("发彩信"); 6 } 7 8 @Override 9 public void playGame() { 10 System.out.println("打王者农药"); 11 } 12 public void siri(){ 13 System.out.println("人工智障"); 14 15 }}
3.定义测试类IPhoneTest, 创建IPhone的对象,调用方法,打印出如下语句
打电话
发彩信
打王者农药
人工智障
1 package com.hp.work08; 2 3 public class IPhoneTest { 4 public static void main(String[] args) { 5 IPhone iPhone=new IPhone(); 6 iPhone.call(); 7 iPhone.sendMessage(); 8 iPhone.playGame(); 9 iPhone.siri(); 10 } 11 12 13 }
第三题:
1.定义Person类,包含空参、满参构造和以下成员变量:
姓名name
年龄age
生成所有成员变量set/get方法
定义方法:void printPerson(),打印出"我是山顶洞人"
1 package com.hp.work08; 2 3 public class Person { 4 public String name; 5 public int age; 6 7 public Person(String name, int age) { 8 this.name = name; 9 this.age = age; 10 } 11 12 public Person() { 13 } 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 public int getAge() { 24 return age; 25 } 26 27 public void setAge(int age) { 28 this.age = age; 29 } 30 public void printPerson(){ 31 System.out.println("我是山顶洞人"); 32 } 33 34 35 }
2.定义Student继承于Person类,新增如下属性
学校 school
生成空参、满参构造和set/get方法
定义方法:void printStudent(),先输出"我叫XXX,我今年YYY岁,我现在的学校是:ZZZ" 再调用printPerson()方法
1 package com.hp.work08; 2 3 public class Student extends Person{ 4 private String school; 5 6 public Student() { 7 } 8 9 public Student(String name, int age, String school) { 10 super(name, age); 11 this.school = school; 12 } 13 14 public String getSchool() { 15 return school; 16 } 17 18 public void setSchool(String school) { 19 this.school = school; 20 } 21 public void printStudent(){ 22 System.out.println("我叫"+name+",我今年"+age+"岁,我现在的学校是:"+school); 23 printPerson(); 24 } 25 }
3.在测试类中,创建并初始化一个Student 对象 s, 调用printStudent()方法,打印出如下语句:
我叫卡特琳娜,我今年19岁,我现在的学校是:战争学院
我是山顶洞人
1 package com.hp.work08; 2 3 public class StudentTest { 4 public static void main(String[] args) { 5 Student s=new Student("卡特琳娜",19,"战争学院"); 6 s.printStudent(); 7 } 8 9 10 }
第四题:
1.定义抽象类Phone,要求如下:
包含空参、满参构造和以下成员变量
品牌 brand( String 型)
生成所有成员变量set/get方法
定义抽象方法:void playMusic(String s)
1 package com.hp.work0802; 2 3 public abstract class Phone { 4 public String brank; 5 6 public Phone() { 7 } 8 9 public Phone(String brank) { 10 this.brank = brank; 11 } 12 13 public String getBrank() { 14 return brank; 15 } 16 17 public void setBrank(String brank) { 18 this.brank = brank; 19 } 20 public abstract void playMusic(String s); 21 22 }
2.定义类IPhone,要求如下:
继承抽象类 Phone
构造方法包括:空参构造和满参构造方法
重写抽象方法:
void playMusic(String s),要求:输出打印"XXX手机正在播放歌曲:s"
PS:XXX是Phone类中的 brand属性值,s是传入的参数
package com.hp.work0802; public class IPhone extends Phone{ public IPhone() { } public IPhone(String brank) { super(brank); } public void playMusic(String s){ brank="华为"; System.out.println(brank+"手机正在播放歌曲:"+s); } }
3.定义测试类TestDemo,在main方法实现以下功能:
创建并初始化一个IPhone 对象 phone,调用phone的playMusic(String s)方法,传入参数"菊花台"
打印出如下语句:
华为手机正在播放歌曲:菊花台
1 package com.hp.work0802; 2 3 public class TestDome { 4 public static void main(String[] args) { 5 IPhone phone=new IPhone(); 6 phone.playMusic("菊花台"); 7 } 8 }
加强题:
=============================================================================
第五题:
1.定义一个Phone类.包含如下属性
品牌brand
价格price
生成所有成员变量set/get方法,空参构造和有参构造
1 package com.hp.work0803; 2 3 public class Phone { 4 public String brank; 5 public int price; 6 7 public Phone() { 8 } 9 10 public Phone(String brank, int price) { 11 this.brank = brank; 12 this.price = price; 13 } 14 15 public String getBrank() { 16 return brank; 17 } 18 19 public void setBrank(String brank) { 20 this.brank = brank; 21 } 22 23 public int getPrice() { 24 return price; 25 } 26 27 public void setPrice(int price) { 28 this.price = price; 29 } 30 }
2.定义一个Person类,包含如下属性
姓名name
年龄age
生成所有成员变量set/get方法,空参构造和有参构造
定义一个玩手机行为 palyPhone(Phone p) 要求打印:"YYY岁的XXX正在玩手机,手机品牌是ZZZ,价格为QQQ
PS:YYY是Person类中的 age属性值,XXX是Person 类中的 name属性值,ZZZ是Phone 类中的 brand属性值,QQQ是Phone 类中的 price属性值"
1 package com.hp.work0803; 2 3 public class Person extends Phone { 4 public String name; 5 public int age; 6 7 public Person() { 8 } 9 10 public Person(String name, int age) { 11 this.name = name; 12 this.age = age; 13 } 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 public int getAge() { 24 return age; 25 } 26 27 public void setAge(int age) { 28 this.age = age; 29 } 30 public void palyPhone(Phone p){
System.out.println(age+"岁的"+name+"正在玩手机,手机品牌是"+p.brank+",价格为"+p.price);
32 } 33 }
3.在测试类TestDemo中,创建Person对象ren,调用ren的 palyPhone(Phone p) 方法,打印出
"40岁的罗永浩正在玩手机,手机品牌是小米,价格为2999"
ps:参数p需要自行创建并初始化变量brand与 price
1 package com.hp.work0803; 2 3 public class TestDemo { 4 public static void main(String[] args) { 5 Person ren=new Person("罗永浩",40); 6
9 } 10 }
第六题:
1.定义抽象类Study,要求如下:
包含空参、满参构造和以下成员方法
定义抽象方法:void stu(Phone p);
定义普通方法: void info1() 打印"好好学习,天天向上"
定义普通方法: void info2() 打印"键盘敲烂,月薪过万"
1 package com.hp.work0804; 2 3 public abstract class Study { 4 public Study() { 5 } 6 7 public abstract void stu(Phone p); 8 9 public void info1(){ 10 System.out.println("好好学习,天天向上"); 11 } 12 public void info2(){ 13 System.out.println("键盘敲烂,月薪过万"); 14 } 15 }
2.定义类Phone,要求如下:
包含空参、满参构造和以下成员变量
品牌 brand
价格 price
生成所有成员变量set/get方法
定义方法:void printPhone(),打印出Phone的具体信息,如"XXX手机,价格YYY"
ps: XXX为Phone类的brand属性 yyy为Phone类的price属性
1 package com.hp.work0804; 2 3 public class Phone { 4 public String brand; 5 public int price; 6 7 public Phone() { 8 } 9 10 public Phone(String brand, int price) { 11 this.brand = brand; 12 this.price = price; 13 } 14 15 public String getBrand() { 16 return brand; 17 } 18 19 public void setBrand(String brand) { 20 this.brand = brand; 21 } 22 23 public int getPrice() { 24 return price; 25 } 26 27 public void setPrice(int price) { 28 this.price = price; 29 } 30 public void printPhone(){ 31 brand="华为"; 32 price=1999; 33 System.out.println(brand+"手机,价格"+price); 34 } 35 36 }
3.定义类Student,包含空参、满参构造和以下成员变量
姓名 name(String 型)
年龄 age(int型)
生成所有成员变量set/get方法
定义成员方法:void studying(Learn le),要求:
1.输出“yyy岁的xxxx学习中”,
2.然后在方法内通过传入的Learnd对象le依次调用info1(),info2(),stu(Phone p)方法
ps: yyy为Student类中的age方法,xxxx为Student类中的name方法,
ps: Learn继承于Study类,需要实现stu(Phone p)抽象方法,实现要求:调用参数p的printPhone()方法;
1 package com.hp.work0804; 2 3 public class Student { 4 public String name; 5 public int age; 6 7 public Student(String name, int age) { 8 this.name = name; 9 this.age = age; 10 } 11 12 public Student() { 13 } 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 public int getAge() { 24 return age; 25 } 26 27 public void setAge(int age) { 28 this.age = age; 29 } 30 public void studying(Learn le){ 31 Phone p=new Phone(); 32 age=15; 33 name="关晓彤"; 34 System.out.println(age+"岁的"+name+"学习中"); 35 le.info1(); 36 le.info2(); 37 le.stu(p); 38 } 39 40 }
package com.hp.work0804; public abstract class Learn extends Study { public void stu(Phone p) { p.printPhone(); } }
4.定义测试类中,创建并初始化一个Student 对象 s, 调用studying(Learn le)方法,打印出如下语句:
15岁的关晓彤学习中
好好学习,天天向上
键盘敲烂,月薪过万
华为手机,价格1999
1 package com.hp.work0804; 2 3 public class TestDome { 4 5 public static void main(String[] args) { 6 7 Student s=new Student(); 8 Learn le=new Learn() { 9 @Override 10 public void stu(Phone p) { 11 super.stu(p); 12 } 13 }; 14 s.studying(le); 15 } 16 }