文章目录
- 项目任务:学生喂养三种宠物:猫、狗和鸟
- 1.任务实施
- (1)创建动物类
- (2)继承动物类,创建猫类
- (3)继承动物类,创建狗类
- (4)继承动物类,创建鸟类
- (5)创建学生类
- (6)测试学生类
- 2.运行结果
项目任务:学生喂养三种宠物:猫、狗和鸟
- 动物类(Animal):属性(name、age)、方法(speak、move、eat)
- 猫类(Cat)继承动物类,添加新方法(play)
- 狗类(Dog)继承动物类,添加新方法(play)
- 鸟类(Bird)继承动物类,添加新方法(play)
- 学生类(Student):属性(name)、方法(feed(animal)
1.任务实施
(1)创建动物类
package p08;
public class Animal {
private String name;
private int age;
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;
}
public void speak(){
System.out.println(name+"今年"+age+"岁了。");
}
public void move(){
System.out.println(name+"在动....");
}
public void eat(){
System.out.println(name+"在吃....");
}
@Override
public String toString(){
return "Animal{"+
"name='"+name+'''+
",age="+age+
"}";
}
}
(2)继承动物类,创建猫类
package p08;
public class Cat extends Animal{
@Override
public void move() {
System.out.println("猫咪[" + getName() + "]在走路。");
}
@Override
public void eat() {
System.out.println("猫咪[" + getName() + "]爱吃鱼虾。");
}
public void play(){
System.out.println("猫咪["+getName()+"]玩老鼠");
}
}
(3)继承动物类,创建狗类
package p08;
public class Dog extends Animal {
@Override
public void move() {
System.out.println("狗崽[" + getName() + "]在蹦跳。");
}
@Override
public void eat() {
System.out.println("狗崽[" + getName() + "]爱吃骨头。");
}
public void play(){
System.out.println("狗崽["+getName()+"[在玩飞盘。");
}
}
(4)继承动物类,创建鸟类
package p08;
public class Bird extends Animal{
@Override
public void move() {
System.out.println("鸟儿[" + getName() + "]在飞翔。");
}
@Override
public void eat() {
System.out.println("鸟儿[" + getName() + "]爱吃小虫。");
}
public void play(){
System.out.println("鸟儿["+getName()+"]在玩羽毛。");
}
}
(5)创建学生类
package p08;
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void feed(Animal animal){
if (animal instanceof Cat) { // 判断是否是猫实例
System.out.println(name + "喂养猫咪[" + animal.getName() + "]。");
} else if (animal instanceof Dog) { // 判断是否是狗实例
System.out.println(name + "喂养狗崽[" + animal.getName() + "]。");
} else if (animal instanceof Bird) { // 判断是否是鸟实例
System.out.println(name + "喂养鸟儿[" + animal.getName() + "]。");
} else {
System.out.println(name + "喂养动物[" + animal.getName() + "]。");
}
animal.move(); // 体现多态
animal.eat(); // 体现多态
}
}
(6)测试学生类
package p08;
public class TestStudent {
public static void main(String[] aegs){
//创建学生对象
Student student = new Student();
student.setName("林豆豆");
//创建第一个动物
Animal animal1 = new Cat();
animal1.setName("虎丸");
animal1.setAge(4);
//创建第二个动物
Animal animal2 = new Dog();
animal2.setName("瑞瑞");
animal2.setAge(5);
//创建第三个动物
Animal animal3 = new Bird();
animal3.setName("小泡芙");
animal3.setAge(3);
//调用学生对象的喂养方法,传入不同的动物
student.feed(animal1);
student.feed(animal2);
student.feed(animal3);
}
}
2.运行结果
- 但是可以看出程序没有运行动物的玩耍方法,我们要运用对象的向下转型进行修改
- 修改完成后再次运行程序