3

【笔记】面向对象的三大特征(封装、继承、多态)、继承详解

 2 years ago
source link: https://www.52pojie.cn/thread-1466355-1-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
查看: 796|回复: 14

[Python] 【笔记】面向对象的三大特征(封装、继承、多态)、继承详解

  [复制链接]

楼主

发表于 2021-6-27 22:45

面向对象的三大特征(封装、继承、多态)
封装:隐藏对象的属性和实现细节,只对外提供必要的方法,相当于将“细节封装起来”,只对外暴露“相关的调用方法”。封装可以通过“私有属性、私有方法”的方式,实现封装。
继承:继承可以让子类具有父类的特性,提高了代码的复用性。继承从设计上是一个增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进已有的算法。
多态:指同一个方法调用由于对象的不同会产生不同的行为。

继承
继承是面向对象程序设计的重要特征,也是实现“代码复用”的重要手段。如果一个新类继承自一个设计好的类,就直接具备了已有类的特征,会大大降低工作难度。已有的类,我们称为“父类或者基类”,新的类,我们称为“子类或者派生类”。
语法格式
Python支持多重继承,一个子类可以继承多个父类。继承的语法格式如下:
class 子类类名(父类1[,父类2,...])
     类体
如果在类定义中没有指定父类,默认父类是object类,也就是说,object是所有类的父类,里面定义了一些所有类共有的默认实现,如:__new__()。
定义子类时,必须在其构造函数中调用父类的构造函数。调用格式如下:
父类名.__init__(self,参数列表)

[Python] 纯文本查看 复制代码
class Person:
def say_age(self):
print('不知道')
class Student(Person):#子类中为空
pass
s = Student()
s.say_age()
运行结果为:不知道
从上面一个简单地例子来看,子类Student已经继承了父类Person,并且可以自由调用方法。
[Python] 纯文本查看 复制代码
class Person:
def __init__(self,name,age):
self.name = name
self.__age = age  #私有属性
def say_age(self):
print('不知道')
class Student(Person):
def __init__(self,name,age,score):
Person.__init__(self,name,age)  #引用中形参是子类中的形参,不是父类中的。而且必须显式的调用,不然解释器不会调用
self.score = score
s = Student('cys',18,100)
s.say_age()
print(s.name)
print(s._Person__age)
运行结果为:不知道
cys
18
从上面代码中可以看出,继承成功后子类一样可以调用父类中的属性,私有属性继承后相当于子类的私有属性,需要使用调用私有属性的方法调用。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK