1、什么是面向对象?(概念)
白话:根据模版(创建一个类并实例化类)这个思路就叫面向对象
2、使用面向对象的好处
2.1、可以重复使用(实例化类)
2.2、容易修改(修改类的模块)
3、类名首字母必须大写
4、面向对象的案例:
class Demo:
# 成员变量
name = None
# 成员方法
def user(self):
print(f'我是{self.name},我的功能是:滴 滴 滴 起床啦')
# 创建实例化类
haha = Demo()
# 给闹钟赋值,取个名字
haha.name = '闹钟001'
# 调用闹钟的方法
haha.user()
5、面向对象的特点
3.1、封装
3.2、继承
3.3、多态
5.1、什么是封装(概念)
将生活中的实物,创建一个类并实例化类就叫封装
创建类 + 实例化类
# 创建一个类
class Demo:
# 成员变量
name = None
age = None
# 成员方法
def user(self):
print(f'我是{self.name},今年{self.age}岁')
# 创建实例化类
a = Demo()
# 给成员变量赋值,
a.name = '木易'
a.age = 18
# 调用成员方法
a.user()
面向对象有个私有方法
私有方法的写法:定义一个函数,在函数名前面加上“ __”
私有方法的作用:只能在函数内部使用
def __user(self):
面向对象的公有方法
公有方法的作用:在任意地方都可以被使用
def func(self):
5.2、什么是继承
从字面意思来讲:子承父业,子类继承父类的成员属性和成员方法
子类继承父类的写法:将父类名字放子类括号中,不管公有还是私有 都可被继承
class Demo2(Demo):
案例 :
# 创建一个类 —— 汽车图纸
class Demo():
def __init__(self, name, type, money, color, ml):
self.name = name # 汽车的的名字
self.type = type # 汽车的类型
self.money = money # 汽车的价格
self.color = color # 汽车的颜色
self.ml = ml # 汽车的发动机
print(f'汽车的名字:{name}, 汽车的类型:{type}, 汽车的价格:{money}, 汽车的颜色:{color}')
# 定义一个私有方法,通过发动机型号计算汽车的马力
def __user(self):
return self.ml * 150
# 定义一个公有方法,打印出汽车的最大马力
def func(self):
self.__user()
print(f'汽车的最大马力:{self.__user()}')
# 实例化类 —— 建立汽车叫 奥迪
aodi = Demo('奥迪A6', '轿跑', 400000, '红色', 1.8)
# 调用方法 func
aodi.func()
# 继承
class Demo2(Demo):
# 在原有的基础上添加一个新的功能
def func2(self):
print('加尾翼')
# 根据类 —— 图纸 新建一辆汽车
aodi = Demo2('奥迪A8', '轿车', 1000000, '白色', 2.0)
# 调用父类方法
aodi.func()
# 调用子类方法
aodi.func2()
5.3、什么是多态
多种状态,完成某个行为时,使用不同的对象会得到不痛的状态
# 定义一个父类
class A:
# 定义一个方法 公有方法
def sound(self):
print('我是父类a')
# 子类 在子类函数名中 加入父类的名字
class Cat(A):
# 定义了一个方法 公有方法
def sound(self):
print('字类Cat, 喵喵喵')
# 子类 在子类函数名中 加入父类的名字
class Dog(A):
# 定义了一个方法 公有方法
def sound(self):
print('子类Dog, 汪汪汪')
# 实例化三个类
A = A()
cat = Cat()
dog = Dog()
# 定义一个函数,函数的名字admin
def admin(func):
# 使用函数的方法
func.sound()
admin(A)
admin(cat)
admin(dog)
# 这样一个过程就叫多态
# 我们在调用函数的时候 传入不同的类 可以输出不同的结果 多态
实战案例(开发的应用场景)
模拟一个银行账户:每个账户都可以进行查询余额,取钱,存钱
# 模拟一个银行账户:每个账户都可以进行查询余额,取钱,存钱
class Demo:
# 初始化这个类
def __init__(self, value, money):
# 卡号
self.value = value
# 余额
self.money = money
# 定义一个方法 —— 存钱
def func(self, data=0):
# 拿到我们的余额加上要存的余额
self.money += data
print(f'存款成功,存款金额:{data}')
# 定义一个方法 —— 查询当前余额
def func2(self):
print(f'当前账户余额:{self.money}')
# 定义一个方法 —— 取钱
def func3(self, data=0):
# 如果取款金额大于当前余额,
if self.money < data:
print('当前账户余额不足')
else:
# 拿到当前余额 减去 取出余额
self.money -= data
print(f'取款成功,取款金额:{data}')
# 实例化类
木易 = Demo('123456789', 100000)
# 查询账户余额
木易.func2()
# 存款金额
木易.func(10000)
# 查询当前余额
木易.func2()
# 取出金额
木易.func3(50000)
# 查询当前余额
木易.func2()
print('----------------------')
zhangsan = Demo('987654321', 500000)
zhangsan.func2()
zhangsan.func(100000)
zhangsan.func2()
zhangsan.func3(500000)
zhangsan.func2()