面向对象:
一种编程思想,和具体的语言无关;所有支持面向对象
程序设计开发的编程语言的面向对象开发的思想都是一致的!
面向对象的核心:类和对象
类:类型、数据类型;从对象中抽取出来的一个抽象的概念
定义某种类型的特征和行为操作
对象:通过某个指定的类型创建出来的具有具体属性和具体行为
的实体;
面向对象三大特征:封装,继承,多态
封装又分为:数据封装 行为【方法】封装 属性封装
1.数据封装:将程序中需要的数据
按照统一的格式封装在类型的内部,通过该类型的对象
包装使用数据!
2.行为方法封装:处理某个独立功能-> 封装成一个独立的函数
获取系统当前时间--封装成一个具体的功能函数
处理和某个数据关联的功能-> 功能代码封装成函数,讲函数封装在类型中[方法]
处理具体功能的方法,就和对应的数据强制关联,方便统一管理维护
3.属性封装: 通过方法限制属性的访问,提高属性的安全性
通过项目的规范,规定了一个下划线开头的属性
是属于对象的私有属性,不能在类型的外部调用!
但是总有人不懂,破坏了规范
通过语法限制,让属性私有化,不让外界直接访问
python中规定了,两个下划线开头的属性是私有的
语法上外界不能直接访问
封装的核心思想:
保障数据安全!
对象中的数据-> 对象的属性-> 属性数据安全-> 不能直接访问
对象的中的属性数据->间接访问得到【通过提供的访问方法】
访问方法:添加获取数据的限制条件、添加数据的限制代码!
继承:让一个类型[子类]继承另一个类型[父类],相当于继承了父类中的公开的属性和方法
在子类中不需要重复编写即可使用,提高了代码的复用性!体现的是A is a B的关系
继承的意义
子类中可以编写父类中没有的属性和方法
实现功能的扩展!
继承的语法结构
class 类型(要继承的类型):
pass
当前类型:子类
要继承的类型:父类
子类继承父类
怎么查看自己到底继承了那些父类:
魔法属性:base 查看当前类型继承的父类
怎么查看当前类型:
通过类型的class魔法属性,直接查看,和type(类型名称)效果一致!
对象.class == type(对象)--> 得到当前对象的所属类型
怎么查看当前类型的所有子类:
通过类型的subclasses魔法函数,直接查看当前类型的所有子类
多态就是多继承的衍生
体现的是 生活中 一个对象 会有多个角色的概念