二 面向对象三大特性

Posted Eric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二 面向对象三大特性相关的知识,希望对你有一定的参考价值。

一 继承与派生

  一、继承定义

  二、继承与抽象的关系

  三、继承与重用性

  四、派生

  五、组合与重用性

  六、接口与归一化设计

  七、抽象类

  八、继承实现的原理

  九、子类中调用父类的方法

二 多态与多态性

  一、多态

  二、多态性

三 封装

  一、封装定义

  二、特性(property)

  三、封装与扩展性

 

一 继承与派生

一、继承定义

什么是继承

继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。

子类会“”遗传”父类的属性,从而解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码)

python中类的继承分为:单继承和多继承

 

 1 class ParentClass1: #定义父类
 2     pass
 3 
 4 class ParentClass2: #定义父类
 5     pass
 6 
 7 class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
 8     pass
 9 
10 class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
11     pass

查看继承

1 >>> SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类
2 (<class __main__.ParentClass1>,)
3 >>> SubClass2.__bases__
4 (<class __main__.ParentClass1>, <class __main__.ParentClass2>)

经典类与新式类

1.只有在python2中才分新式类和经典类,python3中统一都是新式类
2.在python2中,没有显式的继承object类的类,以及该类的子类,都是经典类
3.在python2中,显式地声明继承object的类,以及该类的子类,都是新式类
3.在python3中,无论是否继承object,都默认继承object,即python3中所有类均为新式类
#关于新式类与经典类的区别,我们稍后讨论

提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。

1 >>> ParentClass1.__bases__
2 (<class object>,)
3 >>> ParentClass2.__bases__
4 (<class object>,)

 

以上是关于二 面向对象三大特性的主要内容,如果未能解决你的问题,请参考以下文章

二 面向对象三大特性

大数据必学Java基础(四十):面向对象三大特性之一继承(Inheritance)

Java基础知识面向对象三大特性

面向对象三大特性

大数据必学Java基础(三十九):面向对象三大特性之一封装(Encapsulation)

面向对象 三大特性 五大原则