本套课在线学习视频(网盘地址,保存到网盘即可免费观看):

https://pan.quark.cn/s/3c8e962bddcb

面向对象编程(OOP)是一种编程范式,它通过将数据和操作数据的方法封装在一起,形成对象,从而模拟现实世界的实体和它们之间的关系。继承是OOP中的一个核心概念,它允许通过创建新类(子类或派生类)基于现有类(父类或基类)来避免代码冗余,提高代码的重用性和可维护性。

00:00 - 面向对象继承及其应用

继承的基本概念

继承允许子类继承父类的属性和方法,从而避免重复定义相同的代码。子类可以自动获得父类的特征,并且可以添加或重写特定于子类的功能。

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def speak(self):
        print(f"My name is {self.name}.")

class Teacher(Person):
    def teach(self):
        print(f"{self.name} is teaching.")

class Student(Person):
    def study(self):
        print(f"{self.name} is studying.")

继承的优势

  1. 代码重用:通过继承,子类可以重用父类的代码,减少冗余。
  2. 代码简洁性:继承使得代码更加简洁和易于理解。
  3. 易于维护:修改父类的属性和方法会自动反映在所有子类中,便于维护。

02:12 - 创建教师和学生类及其属性与方法

定义教师和学生类

class Teacher(Person):
    def __init__(self, name, age, gender, subject):
        super().__init__(name, age, gender)
        self.subject = subject

    def teach(self):
        print(f"{self.name} is teaching {self.subject}.")

class Student(Person):
    def __init__(self, name, age, gender, grade):
        super().__init__(name, age, gender)
        self.grade = grade

    def study(self):
        print(f"{self.name} is studying in grade {self.grade}.")

实例化对象

teacher = Teacher("Alice", 30, "Female", "Math")
student = Student("Bob", 15, "Male", 10)

teacher.speak()  # Output: My name is Alice.
teacher.teach()  # Output: Alice is teaching Math.

student.speak()  # Output: My name is Bob.
student.study()  # Output: Bob is studying in grade 10.

03:52 - 面向对象编程中的继承与代码复用

代码重用示例

通过将共有的属性和方法抽取到Person基类中,TeacherStudent类可以继承这些属性和方法,从而实现代码的重用。

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def speak(self):
        print(f"My name is {self.name}.")

class Teacher(Person):
    def __init__(self, name, age, gender, subject):
        super().__init__(name, age, gender)
        self.subject = subject

    def teach(self):
        print(f"{self.name} is teaching {self.subject}.")

class Student(Person):
    def __init__(self, name, age, gender, grade):
        super().__init__(name, age, gender)
        self.grade = grade

    def study(self):
        print(f"{self.name} is studying in grade {self.grade}.")

继承的实现

teacher = Teacher("Alice", 30, "Female", "Math")
student = Student("Bob", 15, "Male", 10)

teacher.speak()  # Output: My name is Alice.
teacher.teach()  # Output: Alice is teaching Math.

student.speak()  # Output: My name is Bob.
student.study()  # Output: Bob is studying in grade 10.

06:43 - 面向对象编程中的继承与方法重用

方法重用示例

通过继承,子类可以重用父类的方法,并且可以添加或重写特定于子类的方法。

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def speak(self):
        print(f"My name is {self.name}.")

class AIEngineer(Person):
    def develop_ai(self):
        print(f"{self.name} is developing AI systems.")

class RoboticsEngineer(Person):
    def develop_robotics(self):
        print(f"{self.name} is developing robotics systems.")

实例化特定领域的继承类

ai_engineer = AIEngineer("Charlie", 25, "Male")
robotics_engineer = RoboticsEngineer("Diana", 28, "Female")

ai_engineer.speak()  # Output: My name is Charlie.
ai_engineer.develop_ai()  # Output: Charlie is developing AI systems.

robotics_engineer.speak()  # Output: My name is Diana.
robotics_engineer.develop_robotics()  # Output: Diana is developing robotics systems.

总结

继承是面向对象编程中的一个重要概念,它通过创建新类基于现有类来避免代码冗余,提高代码的重用性和可维护性。通过将共有的属性和方法抽取到基类中,子类可以继承这些属性和方法,并且可以添加或重写特定于子类的功能。这种方法不仅体现了面向对象编程的三大原则——封装、继承和多态,还使得程序设计更加模块化和易于维护,提升了代码的清晰度和可读性。