class Pet{ //宠物类
void cry(){
System.out.println("叫");
}
void eat(){
System.out.println("吃");
}
void say(){
System.out.println("父类特有的方法");
}
}
class Dog extends Pet{ //狗类
void cry(){
System.out.println("汪汪!!");
}
void eat(){
System.out.println("狗吃了狗粮");
}
void guardEntrance(){
System.out.println("狗在看门");
}
}
class Cat extends Pet{ //猫类
void cry(){
System.out.println("喵喵~~");
}
void eat(){
System.out.println("猫吃了猫粮");
}
void huntMice(){
System.out.println("猫在抓老鼠");
}
}
public class Test {
public static void main(String[] args) {
Pet pet1=new Dog(); //定义一个狗对象,当成Pet看待,向上转型,默认
Pet pet2=new Cat(); //父类引用指向子类的对象
pet1.cry();
pet2.eat();
// pet1.guardEntrance(); //错误,父类无法引用子类特有的部分
Pet pet3=new Cat(); //向下转型,强制(先向上转型再向下)
Cat cat=(Cat)pet3;
cat.cry();
cat.eat();
cat.huntMice();
cat.say();
}
}