Python 面向对象特性
前言
面向对象有三大特性:封装、继承、多态。
一、面向对象特性——封装
封装:把类中的属性或者数据,保护起来,不对外,外面不能直接调用,需要通过特定的方法访问或者赋值。
# 创建一个动物的类
# 创建一个动物的类
class animal:
def __init__(self): # 初始化入口 属性名称前加两个小下划线,代表这个属性只有在这个类可使用
self.__ani_type = None # 定义外部不能直接访问到的属性:__ani_type
self.__name = None # 定义外部不能直接访问到的属性:__name
def set_name(self, name): # 自定义方法,赋值动物名称
self.__name = name
def set_type(self, ani_type): # 自定义方法,赋值动物类型
self.__ani_type = ani_type
def print_info(self): # 自定义方法,打印动物的基本信息
print(f'动物名字:{self.__name}, 类型:{self.__ani_type}')
cat = animal() # 实例化 一只猫
cat.set_name('小白') # 属性被封装在类中了 只能通过方法来修改对象cat中的名称
cat.set_type('猫科动物') # 属性被封装在类中了 只能通过方法来修改对象cat中的类型
cat.print_info() # 调用方法 打印信息
# 输出结果:
# 动物名字:小白, 类型:猫科动物
二、面向对象特性——继承
继承:创建一个新类,并且新的类可以继承一个或者多个父类。
# 创建一个动物的类
class animal:
def __init__(self): # 初始化入口
self.__ani_type = None
self.name = None
def set_name(self, name): # 自定义方法,赋值动物名称
self.name = name
def set_type(self, ani_type): # 自定义方法,赋值动物类型
self.__ani_type = ani_type
def print_info(self): # 自定义方法,打印动物的基本信息
print(f'动物名字:{self.name}, 类型:{self.__ani_type}')
class cat(animal): # 新类,继承了animal父类,可以重写,使用其属性
def __init__(self):
super().__init__()
def print_info(self): # 重写print_info方法,使其功能适合子类
print(f'大家好,我的名字是:{self.name}')
cat = cat() # 实例化 一只猫
cat.set_name('小黑') # 子类调用父类的赋值方法
cat.set_type('猫科动物') # 子类调用父类的赋值方法
cat.print_info() # 调用子类中重写的print_info方法,打印出信息
# 输出结果:
# 大家好,我的名字是:小黑
三、面向对象特性——多态
多态:在继承同一个父类的情况下,多个类有一样方法名的方法,可以独立的实现独自的功能和特性
# 创建一个动物的类
class animal:
def __init__(self): # 初始化入口
self.__ani_type = None
self.name = None
def set_name(self, name): # 自定义方法,赋值动物名称
self.name = name
def set_type(self, ani_type): # 自定义方法,赋值动物类型
self.__ani_type = ani_type
def print_info(self): # 自定义方法,打印动物的基本信息
print(f'动物名字:{self.name}, 类型:{self.__ani_type}')
class Cat(animal):
def __init__(self):
super().__init__()
def print_info(self):# 跟dog类同样重写的父类的print_info方法 实现多态
print(f'大家好,我的名字是:{self.name}, 我是小猫咪')
class Dog(animal):
def __init__(self):
super().__init__()
def print_info(self): # 跟cat类同样重写的父类的print_info方法 实现多态
print(f'大家好,我的名字是:{self.name}, 我是小狗')
cat1 = Cat() # 实例化 一只猫
cat1.set_name('小黑') # 调用方法 传递参数
cat1.print_info() # 调用方法 实现不同输出
dog1 = Dog() # 实例化 一只猫
dog1.set_name('二哈') # 调用方法 传递参数
dog1.print_info() # 调用方法 实现不同输出
总结
以前学习面向对象,不认真,觉得很难,现在看起来,理解了,觉得很简单。哈哈。还是年轻不懂事,没有放心思到学习上。现在也不晚,多敲代码,多看看。加油