python面向对象(下)
1.封装
为了保护类里面的属性,可以采用如下方式解决:
把属性定义为私有属性,即在属性名的前面加上一个或者两个下划线;
添加用于设置或获取属性值的两个方法供外界调用。
继承
单继承
在现实生活中,继承一般指的是子女继承父辈的财产。
在程序中,继承描述的是事物之间的所属关系。
Python程序中,继承使用如下语法格式标注:
class 子类名(父类名)
多继承:
现实生活中,一个派生类往往会有多个基类。比如沙发床是沙发和床的功能的组合,这都是多重继承的体现。
Python支持多继承,多继承就是子类拥有多个父类,并且具有它们共同的特征,即子类继承了父类的方法和属性。
在继承关系中,子类会自动拥有父类定义的方法,但是有时子类想要按照自己的方式实现方法,即对父类中继承来的方法进行重写,使得子类中的方法覆盖掉跟父类同名的方法。 需要注意的是,在子类中重写的方法要和父类被重写的方法具有相同的方法名和参数列表。
多态:
不同国家的人,打招呼的方式是不同的
类方法:
使用修饰器@classmethod来标识类方法
class 类名:
@classmethod
def 类方法名(cls):
方法体
要想调用类方法,既可以通过对象名调用类方法,又可以通过类名调用类方法,这两种方法没有任何区别。
静态方法:
使用修饰器@staticmethod来标识静态方法。
class 类名:
@staticmethod
def 静态方法名():
方法体
静态方法是没有self参数,在静态方法中无法访问实例变量。
静态方法中不可以直接访问类属性,但是可以通过类名引用类属性。
静态方法跟定义它的类没有直接关系,只是起到了类似函数的作用。