宠物间的类图关系如下
现要求实现主人给宠物喂食功能,具体需求如下:
1. 给Dog喂食,其健康值增加3,输出吃饱信息
2. 给Penguin喂食,其健康值增加5,输出吃饱信息
1. 给抽象类Pet增加抽象方法eat()
2. Dog:重写eat
3. Penguin: 重写eat
4. 创建主人类Master
1. 添加给狗狗喂食的方法:feed(Dog dog)
2. 添加给企鹅喂食的方法:feed(Pegnuin peguin)
5. 编写测试方法
1. 调用主人类给狗狗喂的方法
2. 调用主人类给企鹅喂的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
public
abstract
class
Pet {
private
String name =
"无名氏"
;
// 昵称
private
int
health =
100
;
// 健康值
private
int
love =
0
;
// 亲密度
/**
* 抽象方法eat(),负责宠物吃饭功能。
*/
public
abstract
void
eat();
/**
* 有参构造方法。
* @param name 昵称
*/
public
Pet(){
}
public
Pet(String name) {
this
.name = name;
}
public
void
setName(String name) {
this
.name = name;
}
public
void
setHealth(
int
health) {
this
.health = health;
}
public
void
setLove(
int
love) {
this
.love = love;
}
public
String getName() {
return
name;
}
public
int
getHealth() {
return
health;
}
public
int
getLove() {
return
love;
}
/**
* 输出宠物信息。
*/
public
void
print() {
System.out.println(
"宠物的自白:\n我的名字叫"
+
this
.name +
",健康值是"
+
this
.health +
",和主人的亲密度是"
+
this
.love +
"。"
);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public
class
Dog
extends
Pet {
private
String strain;
// 品种
/**
* 有参构造方法。
* @param name 昵称
* @param strain 品种
*/
public
Dog(String name, String strain) {
super
(name);
this
.strain = strain;
}
public
String getStrain() {
return
strain;
}
/**
* 重写父类的print方法。
*/
public
void
print(){
super
.print();
//调用父类的print方法
System.out.println(
"我是一只 "
+
this
.strain +
"。"
);
}
/**
* 实现吃食方法。
*/
public
void
eat() {
if
(getHealth()>=
100
){
System.out.println(
"狗狗"
+
this
.getName() +
"吃饱了,不需要喂食了!"
);
}
else
{
this
.setHealth(
this
.getHealth()+
3
);
System.out.println(
"狗狗"
+
this
.getName() +
"吃饱啦!健康值增加3。"
);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public
class
Penguin
extends
Pet {
private
String sex;
// 性别
/**
* 有参构造方法。
* @param name 昵称
* @param sex 性别
*/
public
Penguin(String name, String sex) {
super
(name);
this
.sex = sex;
}
public
String getSex() {
return
sex;
}
/**
* 重写父类的print方法。
*/
public
void
print() {
super
.print();
System.out.println(
"性别是 "
+
this
.sex +
"。"
);
}
/**
* 实现吃食方法。
*/
public
void
eat() {
if
(getHealth()>=
100
){
System.out.println(
"企鹅"
+
this
.getName() +
"吃饱了,不需要喂食了!"
);
}
else
{
this
.setHealth(
this
.getHealth()+
5
);
System.out.println(
"企鹅"
+
this
.getName() +
"吃饱啦!健康值增加3。"
);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
public
class
Master {
private
String name =
""
;
// 主人名字
private
int
money =
0
;
// 元宝数
/**
* 有参构造方法。
* @param name 主人名字
* @param money 元宝数
*/
public
Master(String name,
int
money) {
this
.name = name;
this
.money = money;
}
public
void
setName(String name) {
this
.name = name;
}
public
void
setMoney(
int
money) {
this
.money = money;
}
public
int
getMoney() {
return
money;
}
public
String getName() {
return
name;
}
/**
* 主人给Dog喂食。
*/
public
void
feed(Dog dog) {
dog.eat();
}
/**
* 主人给Penguin喂食。
*/
public
void
feed(Penguin pgn) {
pgn.eat();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
|
public
class
Test {
public
static
void
main(String[] args) {
Dog dog =
new
Dog(
"欧欧"
,
"雪娜瑞"
);
dog.setHealth(
80
);
//设置健康值,以便正常喂食
Penguin pgn =
new
Penguin(
"楠楠"
,
"Q妹"
);
Master master=
new
Master(
"王先生"
,
100
);
master.feed(dog);
//主人给狗狗喂食
master.feed(pgn);
//主人给企鹅喂食
pgn.setHealth(
80
);
//设置健康值,以便正常喂食
master.feed(pgn);
//主人再次给企鹅喂食
}
}
|
如果再领养XXX宠物,就需要给XXX看病,怎么办?
1) 添加XXX类,继承Pet类,实现吃食方法
2) 修改Master类,添加给XXX喂食的方法
这肯定不科学
0人
|
了这篇文章 |