面向对象之多态

概念

多态性是指同一操作作用于某一类对象,可以有不同的解释,产生不同的执行效果。

多态存在的条件

需要存在继承和实现关系
同样的方法调用而执行不同操作、运行不同代码
在运行时父类或者接口的引用变量可以引用其子类的对象多态作用

class Animals
{
    public String name;

    public void eat(){};
}

class Dog extends Animals
{
    public void eat(){
        System.out.println("🐕啃骨头或者吃shit");
    }
}

class Cat extends Animals
{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

public class Test {
    public static void main(String[] args) {
        Animals an1 = new Dog();
        Animals an2 = new Cat();

        an1.eat();
        an2.eat();
    }
}

多态的上下转型

由子类转成父类,在继承图上是向上移动的,称为向上转型(专用类型→通向类型),总是安全的,子类是父类的超集;类接口中也许会造成方法的丢失,与之相反的操作是向下转型,不安全(可能需要instanceof操作符协助)。

class Animals
{
    public String name;

    public void eat(){};
}

class Dog extends Animals
{
    public void eat(){
        System.out.println("🐕啃骨头或者吃shit");
    }
    public void sleep(){
        System.out.println("狗狗睡觉觉");
    }
}

class Cat extends Animals
{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

public class Test {
    public static void main(String[] args) {
        Animals an1 = new Dog();
        Animals an2 = new Cat();
        Dog dog = new Dog();
        an1.eat();
        //an1.sleep();
        dog.sleep();
        an2.eat();

        if(an2 instanceof Cat){
            System.out.println("aa");
            Cat cat = (Cat)an2;
            cat.eat();
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值