您的位置:

面向对象的三大特性

一、封装性

封装是面向对象的核心思想之一,指将数据与对其进行操作的方法(或称为函数)封装在一起,成为一个“类”(Class)。通过封装,可以达到隐藏数据、保护数据、使代码易于理解和维护等目的。

在Python中,我们可以通过定义类来实现封装。

class Student:
    def __init__(self, name, roll):
        self.name = name
        self.roll = roll

    def display(self):
        print("Name:", self.name)
        print("Roll:", self.roll)

s = Student("Tom", 25)
s.display()

上述代码中,我们使用Class定义一个学生类(Student),并将学生的姓名(name)和学号(roll)作为类属性(类变量)。同时,我们通过定义一个display函数,完成了将学生信息输出到控制台的任务。

二、继承性

继承是指在已有类的基础上,创建一个新的类,新的类可以从原类中继承方法和属性。继承允许我们使用现有的类来定义新的类,从而充分利用现有类的特性。

在Python中,我们可以通过继承来实现对现有类的重用。

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

d = Dog("Rufus")
print(d.speak())

c = Cat("Whiskers")
print(c.speak())

上述代码中,我们定义了一个Animal类和两个子类(Dog和Cat),并通过继承Animal类的方式来重写speak方法从而实现具体的汪汪和喵喵叫声。通过继承Animal类,我们不仅避免了重复地定义Animal类的属性和方法,还保留了其完整的结构和继承关系。

三、多态性

多态是指一类事物,具有多种状态、多种形态或者多种用途的能力。在面向对象程序设计中,多态指同样的操作作用于不同的对象,可以有不同的结果。它让开发人员可以编写出更灵活、可扩展的程序。

在Python中,我们可以使用继承和同名方法重载来实现多态。

class Employee:
    def getSalary(self):
        pass

class Manager(Employee):
    def getSalary(self):
        return "Manager's salary."

class Clerk(Employee):
    def getSalary(self):
        return "Clerk's salary."

employees = [Manager(), Clerk()]
for emp in employees:
    print(emp.getSalary())

上述代码中,我们定义了一个Employee类以及两个子类(Manager和Clerk),并且在子类中重载了getSalary方法,从而实现了调用同一个方法但是得到不同的输出。同时,我们通过将子类对象放入一个列表中,进一步展示了多态的特性。