在测试类中用多态的思想来进行测试,分别实例化猫和狗的对象,并输出结果。
package domain;
public abstract class Animal {
private String name;
private int age;
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = 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 abstract void eat();
}
package domain;
//定义猫类Cat,继承父类Animal
public class Cat extends Animal{
private String lovely;
public Cat() {
}
public Cat(String name, int age, String lovely) {
super(name, age);
this.lovely = lovely;
}
public String getLovely() {
return lovely;
}
public void setLovely(String lovely) {
this.lovely = lovely;
}
public void Catch(){
// System.out.println(getName()+"抓老鼠");
System.out.println("猫抓老鼠");
}
@Override
public void eat(){
// System.out.println(getName()+"吃鱼");
System.out.println("猫吃鱼");
}
}
package domain;
//定义狗类Dog,继承Animal类
public class Dog extends Animal{
private String weight;
public Dog() {
}
public Dog(String name, int age, String weight) {
super(name, age);
this.weight = weight;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
//特有成员方法 看门
public void lookDoor(){
// System.out.println(getName()+"看门口");
System.out.println("狗看门口");
}
@Override
public void eat(){
// System.out.println(getName()+"吃骨头");
System.out.println("狗吃骨头");
}
}
package domain;
public class Test1 {
public static void main(String[] args) {
//生成Animal对象
Animal a = new Cat();
a.setName("豆豆");
a.setAge(5);
System.out.println(a.getName() + "," + a.getAge());
a.eat();
Cat c = (Cat) a;
c.Catch();
System.out.println("----------------------");
Animal d = new Dog();
d.setName("阿拉斯加");
d.setAge(1);
System.out.println(d.getName() + "," + d.getAge());
d.eat();
Dog d1 = (Dog) a;
d1.lookDoor();
if(d instanceof Dog){
Dog d2= (Dog) a;
d1.lookDoor();
}else if(d instanceof Cat){
Cat c1 = (Cat) a;
c1.Catch();
}
}
}
请问怎样修改代码才可以运用多态思想实例化,并输出答案呢?
谢谢
你为什么要把猫变成狗,这是谁家的多态
你的父类对象呢,为什么不装进父类对象里
从你的代码里就能看出来,你根本没理解到底什么是多态
你父类对象里根本没有catch和eat方法呀
先去复习多态的基本概念,搞清楚了再来写代码,不要瞎写乱试