面向对象编程之类与对象

131 阅读2分钟

青训营迎来了面向对象编程(OOP)的重要内容 —— 类与对象,这是一种非常强大的编程范式,能帮助我们以更贴近现实世界的方式去构建软件系统。

类的定义

类可以看作是一种模板,用来描述具有相同属性和行为的一组对象。

以 Python 为例,定义一个简单的 Person 类:

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

    def introduce(self):
        print(f"我叫{self.name},今年{self.age}岁。")

这里 __init__ 方法是类的构造函数,用于初始化对象的属性,在创建 Person 对象时会自动调用,接收 name 和 age 两个参数并赋值给对象的属性。introduce 方法则是这个类的一个行为,用来输出这个人的自我介绍信息。

在 Java 中定义 Person 类如下:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void introduce() {
        System.out.println("我叫" + name + ",今年" + age + "岁。");
    }
}

在 Java 里,属性通常用 private 修饰来保证封装性,通过公共的构造函数来初始化属性,introduce 方法同样用于展示对象的相关信息。

对象的创建与使用

创建对象就是根据类这个模板来实例化出具体的个体。

在 Python 中创建 Person 对象:

person1 = Person("张三", 25)
person1.introduce()

这里先通过 Person 类创建了一个名为 person1 的对象,传入相应的参数初始化,然后调用 introduce 方法输出这个人的介绍信息。

在 Java 中:

Person person2 = new Person("李四", 28);
person2.introduce();

使用 new 关键字创建 Person 对象,再调用其 introduce 方法,就能看到对应的输出了。

继承

继承是面向对象编程的一大特性,它允许一个类(子类)继承另一个类(父类)的属性和方法,并且可以在此基础上进行扩展或重写。

例如在 Python 中定义一个 Student 类继承自 Person 类:

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

    def introduce(self):
        print(f"我叫{self.name},今年{self.age}岁,来自{self.school}。")

这里 Student 类继承了 Person 类的 name 和 age 属性以及 introduce 方法,同时新增了 school 属性,并且重写了 introduce 方法来体现自己作为学生的特点。

在 Java 中类似的继承示例:

public class Student extends Person {
    private String school;

    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }

    @Override
    public void introduce() {
        System.out.println("我叫" + name + ",今年" + age + "岁,来自" + school + "。");
    }
}

通过继承,代码的复用性得到了进一步提升,同时可以根据不同的需求构建出层次分明、逻辑清晰的类结构,在大型软件项目中应用极为广泛。