鸭子类型与多态

鸭子类型与多态

什么是多态?

通俗点说,就是 不同的对象干同一件事或行为,表现出不同的状态。

首先来看下java如何实现多态。

java实现多态有两种方式,继承和接口,通过继承演示多态的实现

 // 多态
public class Polymorphism{
     abstract static class Animal {
         public abstract void say();
     }

     static class Duck extends Animal{

         @Override
         public void say() {
             System.out.println("我是鸭子");
         }
     }

     static class Dog extends Animal{

         @Override
         public void say() {
             System.out.println("我不是狗,我是鸭子");
         }
     }
     public static void say(Animal animal){
         animal.say();
     }
     public static void main(String[] args) {
         say(new Dog());
         say(new Duck());
     }
 }

什么是鸭子类型?

当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

python实现多态是通过鸭子类型

不关注对象的类型,而是关注对象具有的行为 (方法)

Dog和Duck都可以say,都有__init__,可以看做同一种鸭子

a,b,c都是迭代类型,也可以看做同一种鸭子

class Dog(object):

    def __init__(self):
        pass

    def say(self):
        print("我不是狗,我是鸭子")


class Duck(object):
    def __init__(self):
        ...

    def say(self):
        print("我是真正的鸭子")


if __name__ == '__main__':
    ducks = (Dog, Duck)
    for duck in ducks:
        duck().say()
    
    a=[1,2]
    b=(3,4)
    c={5,6}
    a.extend(b)
    a.extend(c)
    print(a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值