第十五节:多态

多态
多态:同一个对象拥有多种形态
作用:把不用的数据类型进行统一,让程序具有超强的可扩展性

//猫是一种动物->继承关系
//可以把猫当成动物来看
public class Cat extends Animal{
    public void eat(){
        System.out.println("猫吃鱼");
    }
    public void catMouse(){
        System.out.println("猫抓老鼠");
    }
}
public class Dog extends Animal{
    public void eat(){
        System.out.println("狗吃骨头");
    }
}
public class Person {

    public void feed(Animal ani){//接收到的所有的动物都是Animal
        ani.eat();
    }
//    public void feedCat(Cat c){
//        c.eat();
//    }
//    public void feedDog(Dog d){
//        d.eat();
//    }
//    public void feedDaXiang(DaXiang dx){
//        dx.eat();
//    }
}
public class Animal {
    public void eat(){
        System.out.println("动物在吃");
    }
}
public class Client {
    public static void main(String[] args) {
//        Cat c=new Cat();
//        Dog d=new Dog();
//
//        Person p=new Person();
//
//        p.feedCat(c);
//        p.feedDog(d);
        Cat c=new Cat();//创建一只猫
        Animal ani1=new Cat();//可以把猫当成动物来看,把子类的对象赋值给父类的引用(变量)  向上转型
        Animal ani2=new Dog();
        Animal ani3=new DaXiang();

//        ani1.catMouse();//站在动物的角度是不能抓老鼠的
//        Person p=new Person();
//        p.feed(ani1);
//        p.feed(ani2);
//        p.feed(ani3);


        //多态:把不同的数据类型进行统一

        //向下转型
        Cat cc=(Cat)ani1;
        cc.catMouse();

    }
}

运行结果:

猫抓老鼠

Process finished with exit code 0

小知识点:
1.把子类的对象赋值给父类的变量->向上转型
缺点:屏蔽掉子类中特有的方法
2.把父类的变量转化回子类的变量->向下转型
向下转型有可能有风险,java要求必须要写强制类型转换
(转换之后的数据类型)变量
(自主学习,侵权可删)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值