目录
1.Java与Python中面向对象的区别
2.封装
3.继承【在Python中,所有类默认继承object类】
4.多态
该篇文章适合掌握Java面向对象基础知识的人阅读,在阅读的时候会发现它们一些语法上会有区别,但是我们有Java的基础,也不难发现其实都差不多,区别都不是很大,不难理解。
2.1 类和对象
①创建类语法
class 类名: 代码块②实例化对象语法
对象名 = 类名( )③调用类属性和方法语法
对象名.属性; 对象名.方法()2.2 self:指的是调用该函数的对象
函数中默认参数self(指的是调用该函数的对象)
案例1:self和对象的内存地址是否一致?一致
案例2:如果是多个对象,调用同一个函数,self地址是否一致?不一致
2.3 属性
①类属性
--可以通过类名或者对象访问:写在类里面
语法: 变量名 = 变量值
--修改类属性:类属性的修改,只能通过类修改,不能通过对象修改
语法:类名.变量名=变量值
注意:如果通过对象对属性进行重新赋值,实际上是给该对象又重新定义了一个属性名一样的变量
②添加对象属性
--类外面添加对象属性
语法:对象名.属性名 = 值
注意:该种方式添加的属性,只能属于该对象的
--类里面添加对象属性
语法:变量名 = 变量值
注意:该种方式添加的属性,属于所有类对象的
--__init__()方法中添加对象属性
语法:self.属性名 = 值【用在__init__()初始化方法中】
③获取对象属性
类外面获取对象属性
语法:对象名.属性名
类里面获取对象属性
语法:self.属性名【用在函数中】
④私有属性和私有方法
设置私有属性和方法
在属性名和方法名前面加两个下划线__
定义为私有属性和私有方法,不能被子类继承
⑤获取和修改私有属性的值
获取:定义getXXX()
修改:定义setXX()2.4 方法
①类方法
用装饰器@classmethod标识
②静态方法
用装饰器@staticmethod标识2.5 魔法方法
①__XX__() 函数叫做魔法方法,指的是具有特殊功能的函数
②__init__()【类似Java语言中的构造方法】
初始化对象,在创建一个对象时默认被调用,不需要手动调用
带参数的__init__()方法
③__str__()【类似Java语言中的toString()方法】
print输出对象时,默认打印的是对象在内存中的地址
如果类中定义__str__方法,则会打印__str__方法中的内容2.6 __init__():初始化对象
在创建一个对象时默认被调用,不需要手动调用
java中所有类都直接或者间接继承Object
python中所有类都直接或者间接继承object
3.1 单继承
父类:class 父类(object):
子类:class 子类(父类):3.2 多继承
子类:class 子类(父类1,父类2)
注意:如果一个类继承多个父类,优先继承父类1的同名属性和方法3.3 查看一个类的继承关系
类.__mro__ 或 类.mro()
3.4 子类重写父类的同名属性和方法
如果子类重写了父类的同名属性和方法,则会调用子类中的同名属性和方法
3.5 子类调用父类的同名属性和方法
在子类的同名方法中调用语法:父类类名.方法(self)
调用父类方法:super().方法()【适用于单继承】
4.1 概念
多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行效果
4.2 实现多态的步骤
①定义父类,提供父类方法
②定义子类,重写父类方法
③传递子类对象给调用者,返回不同的结果4.3 案例:水的三种状态