多态/封装

多态: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内部的转化,就导致虽然看上去相同,但是不同的类内就有不同的前缀,还是不一样的.
posted @ 2019-07-05 23:15  眼见高楼起  阅读(141)  评论(0编辑  收藏  举报