多态/封装

Posted shachengcc1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态/封装相关的知识,希望对你有一定的参考价值。

多态:python中处处是多态,无需这个概念
python是一种弱类型语言,变量的类型是可以改变的;不论什么类型,都可以传到函数中
在Java这种强类型语言中变量的类型是不可以变.
Java多态的体现:传一个变量,就需要在这个变量前加上类型名,Java没有多继承

python没有多态,有鸭子类型
鸭子类型:看着像鸭子,那他就是鸭子
class Str:
def index(self):
pass

class List:
def index(self):
pass

class Tuple:
def index(self):
pass

#鸭子类型,这些类中有一些相同功能的方法,那么名字就写的相同,这些方法相同使用也相同的类彼此之间互称为鸭子.


封装:广义的封装:实例化一个对象,给对象空间封装一些属性
狭义的封装:私有制,私有的概念
私有成员:私有静态字段(在静态字段名前加__),私有方法(在方法名前加__),私有对象属性(在属性名前加__)

对于私有静态字段而言,派生类不能访问,在类的外部都不能访问.只能在类的内部可以访问
对于私有方法而言,派生类不能访问,在类的外部都不能访问.只能在类的内部可以访问
对于私有属性而言,派生类不能访问,在类的外部都不能访问.只能在类的内部可以访问
一旦class语言定义执行,python在这个类的内部就把原来的私有成员名字改成了_类名+__私有成员名,这就意味着所有外面的按照代码去找私有成员都是找不到的.
即使内外两个类都有相同的私有成员,但是经过python内部的转化,就导致虽然看上去相同,但是不同的类内就有不同的前缀,还是不一样的.

以上是关于多态/封装的主要内容,如果未能解决你的问题,请参考以下文章

JAVA面向对象,继承、封装、多态

详细的解释下类的封装性,抽象性,继承性和多态性。

15:面向对象三大特性(封装继承多态)之多态

封装 多态

面向对象编程三大特性-封装、继承、多态

0面向对象三大机制 封装继承多态