/*
多态:多中形态
class Animal
{
}
class 猫 extends Animal
{
}
猫:可以看成猫 猫 mao=new 猫();//常态
可以看做动物 Animal mao=new 猫();//多态
多态:父类类型的引用指向了子类类型的对象
多态的弊端:只能调用 父类中的功能
*/
abstract class Animal{
public abstract void eat();
}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
//猫得有的功能
public void catchMouse(){
System.out.println("猫捉老鼠");
}
}
public class Demo5{
public static void main(String[] args) {
Animal animal=new Cat();
animal.eat();
}
}
==============================================================================================================
/*
多态:多中形态
class Animal
{
}
class 猫 extends Animal
{
}
猫:可以看成猫 猫 mao=new 猫();//常态
可以看做动物 Animal mao=new 猫();//多态
多态:父类类型的引用指向了子类类型的对象
多态的弊端:只能调用 父类中的功能
多态的好处:提高了程序的扩展性,前期定义的功能可以被后期出现的事务使用
*/
abstract class Animal {
public abstract void eat();
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
// 猫得有的功能
public void catchMouse() {
System.out.println("猫捉老鼠");
}
}
class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
// 狗特有的方法
public void watchHouse() {
System.out.println("狗会看家");
}
}
public class Demo5 {
public static void chi(Animal animal){
animal.eat();
if (animal instanceof Cat) {
Cat mao=(Cat)animal;
mao.catchMouse();
}
if (animal instanceof Dog) {
Dog dog=(Dog)animal;
dog.watchHouse();
}
}
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog=new Dog();
chi(cat);
chi(dog);
/*//存在多态时,如何使用子类特有的功能
Animal mao=new Cat();//向上转型
mao.eat();
Cat cat2=(Cat)mao;//向下转型
cat2.catchMouse();*/
}
}