Python封装,继承与多态

封装、继承和多态是面向对象的三大特点;直接看Python中是怎么实现的

封装 继承 多态

封装<a id=01></a>

首先定义一个 Human 类,初始化类的属性和方法:

1class Human: 2 def __init__(self): 3 # 这是可以公共知道的属性 4 self.age = None # 年龄 5 self.height = None # 身高 6 7 # 这是私有属性,如持有多少钱 8 self.__money = None 9 10 # 为了让自己使用自己的钱,要设置方法来获取 11 def getMoney(self): 12 return self.__money 13 # 设置money值 14 def setMoney(self, money): 15 if money > 0: 16 self.__money = money 17 def speak(self): 18 pass

这样我们就可以说这个类完成了封装。可以看出封装就是把众多属性和方法合在一起,形成一个功能。这是一种编程思想。

继承<a id=02></a>

前面我们定义了 Human 类,现在我们还想定义一个类,它可以使用 Human 类的功能,同时也有自己的功能,可以使用继承:

1class LocalHuman(Human): 2 3 # 这是这个类独有的功能 4 def speak(self): 5 print('我会说本地话。')

运行测试代码:

1if __name__ == '__main__': 2 # 创建LocalHuman实例 3 local_human = LocalHuman() 4 # 测试 5 # 这是继承自Human类的 6 print(local_human.height) 7 print(local_human.age) 8 print(local_human.getMoney()) 9 # 这是自己的 10 local_human.speak()

结果如下: image 这样的过程就是继承,当需要使用的功能有部分重复时,我们优先使用继承的方法,避免再一次造出重复的功能。

多态<a id=03></a>

定义一个 Rich 类,它继承 Human 类:

1class Rich(Human): 2 def __init__(self): 3 self.age = 1 4 self.height = 10 5 # 部分属性和父类不同 6 self.setMoney(100000000) 7 8 def speak(self): 9 print('我喜欢极限运动!')

定义一个函数接收 Human 对象,来展示 Human 对象的不同形态:

1def show(h: Human): 2 print(h.getMoney()) 3 h.speak()

测试代码:

1if __name__ == '__main__': 2 # 创建LocalHuman实例 3 local_human = LocalHuman() 4 # 创建Rich实例 5 rich = Rich() 6 # 测试 7 # 调用show 函数,显示他们的不同 8 show(local_human) 9 print('-' * 31) # 分隔符 10 show(rich)

运行结果: image

可以看出,同一个函数传入父类是Human类,可以表示出多种形态,这就是Human类的多态。

点赞
收藏

评论区

加载中...

相关推荐

c++类和继承面试点25连问

本篇文章连问面试时经常会遇到的类和继承相关25个问题,看看你能回答出几道题呀。还是先看一下思维导图,如下:1.c的三大特性是什么c的三大特性,说白了其实就是面向对象的三大特性,是指:封装、继承、多态,简单说明如下:封装是一种技术,它使类的定义和实现分离,也就是隐藏了实现细节,只留下接口给他人调用,另外封装还有一层意义是它把某种事物具现出属性和方

java中面向对象的一点学习总结

最近开始看java的一些东西,感觉比python麻烦些,今天学习了面向对象的一些东西,觉得挺多挺复杂,这里做个知识总结以一个简单的例子来说明java面向对象的三大特性,封装,继承,多态,有一个动物(Animal)基类,定义了run与eat方法,然后有一个猫(Cat)与狗(Dog)的子类继承了动物这个父类,子类重写(override)了父类的run与eat

java面试(1)

1.面向对象的基本特征  封装、继承、多态、  封装:把客观事物封装成类  继承:继承一个类,就可以使用这个类的所有功能,并且在无需编写原来类的情况下对这些功能进行扩展  多态:子对象调用父对象,父对象会根据当前调用的子对象以不同的方式运作  实现多态:覆盖,重载2.final\\finally\\finalize的区别  fin

java面向对象的三大特性

java面向对象的三大特性1.封装,把事物封装成抽象的类,通过访问控制符把自己的成员变量和函数对不可信的进行信息隐藏以及提供方法给可信的类和对象来操作。2.继承,继承可以使用现有类的所有功能和成员变量,并且无需重新编写原来的类的情况下对这些功能进行扩展。3.多态,实现了对代码的复用,多态具体体现为重载和重

java的封装和this关键字知识整理

封装封装概述封装,是面向对象思想的特征之一。面向对象共有三个特征:封装,继承,多态。|封装表现:1.方法是最基本的封装体2.类也是一个封装体.封装的好处:1、提高了代码的复用性。 2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。 3、提高了安全性。

Java(3)

面向对象编程思想:抽象 继承 多态 封装对象:万事万物皆对象. 类:把具有相同属性和方法的对象抽象出来形成的几何体!类是对象的抽象,对象是类的具体!如何描述一个类1.属性(属性不初始化时也有初始值,会自动初始化,整形为0 小数型为0.0  boolea