zoukankan      html  css  js  c++  java
  • class多态

    多态代码实现:

    class Animal(object):
    def __init__(self, name): # Constructor of the class
    self.name = name

    def talk(self): # Abstract method, defined by convention only
    print('the is Animal talk function')
    pass #raise NotImplementedError("Subclass must implement abstract method")

    # @staticmethod #不写@staticmethod obj 就是self,就不是一个需要传递的参数
    def animal_talk(obj):
    obj.talk()

    class Cat(Animal):
    def talk(self):
    print('Meow!')


    class Dog():
    def talk(self):
    print('Woof! Woof!')


    d = Dog()
    #d.talk()

    c = Cat("xu")
    #c.talk()
    #
    # def animal_talk(obj):
    # obj.talk()

    #同一个接口,不同的实现
    Animal.animal_talk(c)  #调用对象c中的talk()
    Animal.animal_talk(d)  #调用对象d中的talk()

    X = Animal('alex') #X是 Animal类的实例化对象
    Z = Animal #Z 是Animal类的内存地址
    print(X)
    print(Z)

    # X.animal_talk(c)
    Animal('alex').animal_talk() #调用自己的方法,self 不用写
    X.animal_talk() #调用自己的方法,self 不用写
    Z.animal_talk(c)

    # Animal('alex1').animal_talk(c) #@staticmethod 这行不注释,这行才不报错

    面向对象的特性:封装、继承、多态;

    多态:
    多态是面向对象的重要特性,简单点说:“一个接口,多种实现”;就是同一个方法调用不同对象,结果不一样。

    封装:
    封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

    继承:
    一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承;继承可以扩展已存在的代码模块(类);

    参考:
    https://www.cnblogs.com/alex3714/articles/5188179.html
  • 相关阅读:
    安卓开发1-开发第一个安卓hello word
    安卓开发系列
    Php调用工行支付接口时的问题解决
    angular模块
    angular自定义指令基础
    ajax跨域问题
    angular要点总结
    JS闭包函数
    避开ie6使用float后再使用margin兼容的2种方法
    如何学习面向对象编程
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9645444.html
Copyright © 2011-2022 走看看