zoukankan      html  css  js  c++  java
  • 多态和鸭子类型

    多态:一个类型表现出来的多种状态,实际上是通过继承来完成的
    既一个类实例化出来的不同对象是这个类表现出来的不同形态

    而在java中:一个参数必须定制类型,所以如果想让两个类型的对象都可以传递,那么必须让这两个类继承自一个父类,在制定类型的时候使用父类来声明

    鸭子类型:一个类可以是很多类的鸭子类型,既一个类不需要依靠继承其它的类来判断它是否属于其它的类

      例如一个元组类是可迭代的,但是它并没有依靠继承可迭代类来判断自己是否是可迭代的

      例如通过调用len函数查询某个内部实现了__len__方法的类的对象的某个数据类型的长度时,其对象可以说是鸭子类型

    class List(object):  # 在这里模拟一下list类的部分实现原理
        def __init__(self):
            self.ls = []
    
        def append(self, n):
            self.ls.append(n)
    
        def __len__(self):  # 在类的内部实现一个__len__方法
            return len(self.ls)
    
    
    lst = List()  # 实例化一个列表对象
    lst.append(4)  # 调用append方法增加元素4
    lst.append('hhh')
    
    
    def len(obj):   # 在外部定义一个len方法
        return obj.__len__()
    
    ret = len(lst)
    print(ret)
  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13537433.html
Copyright © 2011-2022 走看看