zoukankan      html  css  js  c++  java
  • python之继承、抽象类、派生、多态、组合、封装

     

    1、继承概念的实现方式主要有2类:实现继承、接口继承。

    Ø         实现继承是指使用基类的属性和方法而无需额外编码的能力;
    Ø         接口继承是指仅使用属性和方法的名称、子类必须提供实现的能力(子类重构爹类方法);
    父类是抽象类,仅定义将由子类创建的一般属性和方法。
     
    2、抽象类
    同java里的接口定义,父类不实现任何功能
    import abc
    class Animal:
        @abc.abstractmethod
        def run(self):
            pass
        @abc.abstractmethod
        def eat(self):
            pass
    
    class People(Animal):
        def run(self):
            print('people is walking')
        def eat(self):
            print('people is eating')
     
     3、派生

      除了继承父类的,还要派生属于自己的属性

     

    4、多态是为了实现接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中不同的实例(如People,Pig)的某一属性时的正确调用。
     
     5、组合  

    对象作为另一个对象的属性,如 teacher1.course = python 其中python是个课程对象

     

    6、封装

    加__变形后实现隐藏,意义是隔离复杂性,特性如下

      1、在类外部无法直接obj.__AttrName

      2、在类内部直接obj.__AttrName

      3、子类无法覆盖父类__开头的属性

    class A:
        __x = 1
    
        def __init__(self,name):
            self.__name = name
    
        def __foo(self):
            print('run foo')
            print(self.__x)
    
    a = A('egon')
    a._A__foo()
    print(a._A__x)
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/stin/p/8311652.html
Copyright © 2011-2022 走看看