/*
多态:
{
public abstract void eat();
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
public void kanjia()
{
System.out.println("看家");
}
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
多态:
事物存在的不同形态
{
public abstract void eat();
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
public void kanjia()
{
System.out.println("看家");
}
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class eight
{
public static void main(String[] args)
{
Animal a2=new Cat();//多态的体现 父类的引用直接指向了自己的子类
//类型提升,向上转型
//想要调用猫特有的方法时,向下转型
Cat c=(Cat)a;
c.catchMouse();
function(new Cat());
function(new Dog());
function(new Cat());
}
public static void function(Animal a)//Animal a=new Cat();
{
a.eat();//父类的引用也可以接受自己的子类对象
// a.catchMouse();
}
}
多态:
注意:不能使用
报错信息:
想要调用特有的方法涉及到转型
转型:
自定义函数中,想要调用子类的特有方法,但是子类具有多态性,一个父类有很多不同的子类,每个子类都有不同的方法
在自定义函数中,我们需要判断这个子类是哪一个类型;
101_面向对象多态示例