面向对象编程的三个特性:封装性、继承性、多态性。
封装是指把数据和函数封装成为一个对象,也就是创建一个名字空间,通过这个名字空间引用这些数据和函数,这就是定义对象、声明对象、使用对象。类的定义就是定义对象拥有的属性和方法,类的实例化就是声明这个类的一个对象,访问对象的属性和方法就是使用这个对象。
# 定义对象, 定义类
class Person():
def __init__(self, name, age):
# 定义对象的属性
self.name = name
self.age = age
# 定义对象方法
def speak(self, word):
print(f'{self.name}说:', word)
# 声明对象,类的实例化
p = Person('张三', 18)
# 使用对象,调用对象方法
p.speak('hello, world!')
继承是指定义对象时复用已有对象的代码,此时已有对象称为基础类,新对象称为扩展类。通过继承机制,新对象不但复用了其它对象的属性和方法,并且在这个基础上重新定义该对象专有的属性和方法。
class Teacher(Person):
def __init__(self, name, age):
super().__init__(name, age)
# 定义新属性
self.teaching = ''
# 定义新方法
def teach(self, teaching):
self.teaching = teaching
self.speak(self.teaching)
# 覆盖已有方法
def speak(self, word):
print(f'老师{self.name}教授:{self.teaching}')
class Student(Person):
def __init__(self, name, age):
super().__init__(name, age)
self.knowledge = ''
def learn(self, teacher):
self.knowledge = teacher.teaching
self.speak(self.knowledge)
def speak(self, word):
print(f'学生{self.name}学习:{self.knowledge}')
t = Teacher('张三', 32)
s = Student('李四', 10)
t.teach('知识就是力量!')
s.learn(t)
多态是指对象继承时,重定义基础对象的方法,此时,不同扩展对象调用相同方法时呈现不同的结果,因此叫作多态性。如上述代码中老师和学生对象都调用speak方法但输出却不同。
留言与评论(共有 0 条评论) “” |