封装 继承 多态
封装
在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。
封装其实分为两个层面,但无论哪种层面的封装,都要对外界提供好访问你内部隐藏内容的接口(接口可以理解为入口,有了这个入口,使用者无需且不能够直接访问到内部隐藏的细节,只能走接口,并且我们可以在接口的实现上附加更多的处理逻辑,从而严格控制使用者的访问)
第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装。 注意:对于这一层面的封装(隐藏),类名.和实例名.就是访问隐藏属性的接口
第二个层面的封装:类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。
Python中私有化的方法也比较简单,即在准备私有化的属性(包括方法、数据)名字前面加两个下划线即可。
继承
在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
class Person(object):
def init(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == “male”:
print(“man”)
elif self.sex == “female”:
print(“woman”)
class Child(Person): # Child 继承 Person
pass
May = Child(“May”,“female”)
Peter = Person(“Peter”,“male”)
print(May.name,May.sex,Peter.name,Peter.sex) # 子类继承父类方法及属性
May.print_title()
Peter.print_title()
May female Peter male
woman
man
In [7]:
class animal(object):
def eat(self):
print(“吃饭”)
def drink(self):
print(“喝水”)
class brid(animal):
def fly(self):
print(“飞”)
单继承和多继承
单继承:子类只有一个直接父类称为单继承
多继承:子类有多个直接父类称为多继承
子类会继承所有父类(包括直接父类和间接父类)的所有属性和方法
子类可以添加父类中没有的属性和方法
重写
重写又称覆盖 1、参数列表必须完全和被重写方法的参数列表一致
2、返回类型必须完全和被重写方法的返回类型一致
3、访问修饰符的限制一定要大于被重写方法的访问修饰符 基本设计本原则:
子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写
重写方式:在子类中定义父类中重名的属性和方法(包括装饰器)
子类重写父类的属性,通过子类或者实例对象只能访问子类中重写后的属性,而无法访问父类中被重写的属性 子类重写父类的方法,通过子类或其实例对象只能调用子类重写的方法,而无法调用父类中被重写的方法。
父类中重写的方法名为XXX的方法,在子类重写的方法中可以通过supper().xxx()进行调用
In [ ]:
本文介绍了程序设计中封装、继承和多态的相关知识。封装分为两个层面,可隐藏部分内容并提供访问接口;继承可让子类继承父类属性和方法,有单继承和多继承;重写则允许子类修改父类方法,需遵循一定规则。
1万+

被折叠的 条评论
为什么被折叠?



