abstract class Animal
{
abstract void eat();
}
class Dog extends Animal
{
void eat() {
System.out.println("啃骨头");
}
}
class Cat extends Animal
{
void eat() {
System.out.println("猫吃鱼");
}
}
class DuoTaiDemo
{
public static void main(String[] args) {
Cat c = new Cat();
c.eat();
method(new Dog());
Animal a = new Cat(); // 自动类型提升,猫提升了动物类型,但是猫的特殊功能无法使用 向上转型
Cat c = (Cat)a; // 强制类型转换, 向下转型 C又可以特殊的方法了。
// 注意: 对于转型,自始自终都是子类对象在做类型的变化
// instanceof 判断对象暗送具体类型,是否属于哪个类 if (a instanceof Cat) {}
// 多态调用方法,子类优先,方法属于对象的,成员变量则属于类的,本类优先
}
/* 用父类声名,子类传递实现多态*/
public static void method(Animal a) {
a.eat();
}
}
java 多态
最新推荐文章于 2024-02-27 19:47:16 发布