面向对象的封装、继承和多态特性_python
2024-09-04 08:48:26
一、面向对象的几个特点
面向对象也称为类,拥有下面几个特点
1、封装特性:利用类的__init__(self)构造方法封装对象
构造方法:__init__(self):在生成对象的时候会自动调用
例子:
class person():
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def print_info(self,num):
print(num,self.name,self.age, self.sex) obj=person("chen",21,'男') #调用类生成对象时填写的参数就是__init__()方法的参数。生成对象时填写的参数就是构造方法的参数
obj.print_info(1)
obj2=person("xiao",22,'女') #封装的第二个对象
obj2.print_info(2) 2、继承
(1)建立父子关系:
class father:
def backetball(self):
print('backetball')
def football(self):
print('father_football')
class son(father): #指定这个类的父类,与其他类产生父子关系
def football(self):
print("football")
obj=son() #生成子类对象
obj.football() #football #当子类与父类拥有同一个方法时,默认只执行子类的方法
obj.backetball() #backetball #可以调用父类中的方法 ①如果子类和父类有相同的方法,默认只执行子类中的,如何也要执行父类中的?
在子类的方法中添加:
super(子类名,self).方法(...)
class son(father):
def football(self):
super(son,self).football() #添加之后也会执行父类的方法,凡是子类也是会执行
print("football")
(2)多继承(一个子类多个父类)
①出现调用父类方法时,父类中有相同的方法,调用顺序:
从左到右(如上列子F2优先于F1),一条路走到黑;同一个根时,根最后才执行。
②默认只执行一个_init_方法,如果要执行多个,可以在第一个里面进行调用其他
如下面流转执行顺序例子:
更深知识点:
类都是type类的对象,类生成对象时不是单纯执行__init__,还有type类里面的__call__和__new___,最终展示出来就是执行了__init__方法,其实是执行了好几个方法。
3、多态
一个接口,多种实现
生活例子:老板只需要说开始工作,各部门就会开始各自工作
最新文章
- 轻松掌握:JavaScript组合模式
- Laravel 5.1 文档攻略 —— Eloquent Collection
- ASP.NET Web API 中的异常处理(转载)
- 让chrome浏览器快的不要不要的
- Manacher算法求回文半径
- Changing a Service's Configuration
- CVE漏洞—PHPCMS2008 /type.php代码注入高危漏洞预警
- Native App自动化测试及Appium框架介绍
- Prism框架中加载类库中时其中第三方类dll提示无法加载程序集
- ambari 安装HDP3.0.1后,启动服务的问题记录
- 最好的8个 Java RESTful 框架
- shiro 权限 URL 配置细节
- Vue 1.0 和 2.0 执行顺序
- MVC各层应该要实现的代码
- YARN与MapReduce1的对比
- JDBC 连Sql Server 接数据库--The TCP/IP connection to the host localhost, port 1433 has failed
- 20155239 2016-2017-2 《Java程序设计》第8周学习总结
- Android之 内容提供器(1)——使用内容提供器访问其它程序共享的数据
- java做web抓取
- 为某个云服务设置RVIP
热门文章
- LeetCode 面试题22. 链表中倒数第k个节点
- 关于GC(垃圾回收)
- 50元求解pyqt加载并显示pdf问题
- navicate premium连接sqlserver时报08001错误的解决方法
- Jenkins+robotframework持续集成环境(三)
- opencv —— line、ellipse、rectangle、circle、fillPoly、putText 基本图形的绘制
- MVC5+EF6入门完整教程7:排序过滤分页
- SpringBoot从1.5.1→2.2.4项目加包扫雷三:org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter已过时
- wxpython 简单例子:显示文本框的窗口显示鼠标位置
- Chapter1 递归与递推