动物类(Animal):属性(name、age)、方法(speak、move、eat)
猫类(Cat)继承动物类,添加新方法(play)
狗类(Dog)继承动物类,添加新方法(play)
鸟类(Bird)继承动物类,添加新方法(play)
1、创建动物类
public class Animal {
private String name;
private int age;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int setAge(){
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 +
'}';
}
public void play() {
}
}
2、继承动物类,创建猫类
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、继承动物类,创建狗类
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、继承动物类,创建鸟类
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、创建学生类
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() + "]。");
Cat cat = (Cat) animal;
cat.play();
} else if (animal instanceof Dog) { // 判断是否是狗实例
System.out.println(name + "喂养狗崽[" + animal.getName() + "]。");
Dog dog = (Dog) animal;
dog.play();
} else if (animal instanceof Bird) { // 判断是否是鸟实例
System.out.println(name + "喂养鸟儿[" + animal.getName() + "]。");
Bird bird = (Bird) animal;
bird.play();
} else {
System.out.println(name + "喂养动物[" + animal.getName() + "]。");
}
animal.speak();
animal.move(); // 体现多态
animal.eat(); // 体现多态
animal.play();
}
}
6、创建测试学生类
public class TestStudent {
public static void main(String[] args) {
// 创建学生对象
Student student = new Student();
student.setName("沸羊羊");
// 创建第一个动物
Animal animal1 = new Cat();
animal1.setName("小胖");
animal1.setAge(2);
// 创建第二个动物
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);
}
}
运行程序,查看结果