package package1;
public class Demo10 {
public static void main(String[] args) {
//父类的引用变量可以引用其子类的对象
Animal dog=new Dog("旺旺");//向上转型首先是安全的,可能会导致子类方法丢失
dog.eat();//父类的引用变量只能调用父类中有的方法或在子类中重写父类的方法
Animal cat=new Cat("招财猫");
cat.eat();
//向下转型是不安全的
if (cat instanceof Cat) {
System.out.println("再次打印");
Cat cat2=(Cat)cat;
cat2.sleep();
}
}
}
class Animal{
private String name;
public Animal(String name) {
this.name=name;
}
//这是一个通用方法,通用方法没有实现没有意义,只是告诉子类去实现它
public void eat() {
}
}
class Dog extends Animal{
public Dog(String name) {
super(name);
}
public void eat() {
System.out.println("啃骨头");
}
}
class Cat extends Animal{
public Cat(String name) {
super(name);
}
public void eat() {
System.out.println("吃鱼");
}
public void sleep() {
System.out.println("睡觉");
}
}