什么是面向对象的编程语言?什么是封装、继承、多态?

        面向对象的编程语言(Object-Oriented Programming Language,简称OOPL)是一种程序设计范型或程序设计方法(其实也就是我们上一篇中提到的一类编程语言的设计思想),以对象作为基本程序结构单位,强调将现实世界的事物抽象为“对象”,并使用和对象之间的关系(如继承封装多态)来组织代码。

    常见的面向对象的编程语言有Java、C++、C#、Python、Ruby、PHP等。这些语言都提供了对面向对象编程概念的支持,如类、对象、封装、继承和多态等。

图片

以下是面向对象编程的几个核心概念:

1、对象(Object)

    对象是现实世界中实体的抽象,是面向对象编程的基本单位。每个对象都拥有自己的属性和方法例如我们把车抽象成了一个对象,这个对象就有一些属性和方法,这个对象可能包含属性如color(颜色)、brand(品牌)、makeYear(制造年份)等,以及方法如start()(启动)、stop()(停止)、accelerate()(加速)等。

    更加深入一点的理解,在面向对象的编程语言中,对象是一个包含数据属性)以及处理这些数据的方法函数或过程)的封装体(看点3)

① 对象包含数据(属性):

    对象通常具有一些与其相关的数据,这些数据被称为对象的属性或状态。例如,在一个Car对象中,color、brand和makeYear就是对象的属性,它们描述了该对象(汽车)的一些固有特征。

② 对象包含处理数据的方法(函数或过程):

    除了数据之外,对象还包含可以操作这些数据的方法。这些方法定义了对象的行为。在Car对象的例子中,start()、stop()和accelerate()就是方法,它们描述了汽车可以执行的操作。

2、类(Class)

    类是对一组具有相同属性和方法的对象的抽象描述。通过类,我们可以创建(实例化)新的对象。

    通过定义类,我们可以创建多个具有相同特征和行为的对象实例。我们以Python为例,通过类创建两个不同的对象。

# 定义Car类class Car:     # 初始化方法 (__init__) ,这是类的构造函数,用于初始化新创建的对象    def __init__(self, color, brand, makeYear):        # 颜色          self.color = color         # 品牌         self.brand = brand         # 制造年份         self.makeYear = makeYear      # 定义start方法,这个方法没有参数(除了self),仅仅打印一条消息来模拟汽车的启动过程。    def start(self):          print("Car is starting...")      # 定义stop方法,这个方法也是打印一条消息来模拟汽车的停止过程。    def stop(self):          print("Car is stopping...")    # 使用类创建一个Car对象# 名为my_car,并调用了__init__方法来初始化它。颜色为"red",品牌为"Toyota",制造年份为2020。
 my_car = Car("red", "Toyota", 2020) # 当然可以继续使用类创建不同的对象 # car1 = Car("blue", "Honda", 2019) # car2 = Car("silver", "BMW", 2021) # 访问对象的属性 print(my_car.color) # 输出: red # 调用对象的方法 my_car.start()  # 输出: Car is starting...

3、封装(Encapsulation)

    封装是面向对象编程的一个重要特性,它意味着对象的属性和方法被封装(封和装相当于你把一些东西用盒子装起来并用胶带封上,但是别人依旧能通过一个接口来使用盒子内部的东西)在对象内部,对外只提供有限的接口。

    这样,外部代码不能直接访问或修改对象的内部状态,只能通过对象提供的接口(即方法)来与对象进行交互,这样的封装可以保护对象内部的数据,有助于提高代码的安全性和可维护性。

    在Car类中,我们并没有直接暴露color属性让外部直接修改,而是通过方法来访问(my_car.color)或修改它(虽然例子中并没有修改)。

4、继承(Inheritance)

    继承允许我们创建一个新的类(子类),该类继承自一个已存在的类(父类)。子类可以继承父类的属性和方法,并可以添加新的属性和方法或覆盖父类的方法。

假设我们有一个ElectricCar类,它继承自Car类。

# 定义ElectricCar(电动汽车)类class ElectricCar(Car):      # ElectricCar类的初始化方法 (__init__)    # 该方法接受四个参数:color(颜色)、brand(品牌)、makeYear(制造年份)和battery_capacity(电池容量)。    def __init__(self, color, brand, makeYear, battery_capacity):         # 调用了父类Car的__init__(初始化)方法,传递了颜色、品牌和制造年份这三个参数,以确保ElectricCar对象也拥有Car类的基本属性。            super().__init__(color, brand, makeYear)           # 然后又设置了ElectricCar对象特有的battery_capacity属性。         self.battery_capacity = battery_capacity      # 定义recharge方法,打印一条消息来模拟电动汽车电池的充电过程    def recharge(self):          print("Battery is recharging...")    # 创建一个ElectricCar对象  my_electric_car = ElectricCar("green", "Tesla", 2022, 80)  # 访问从父类继承的属性  print(my_electric_car.color)  # 输出: green  # 调用从父类继承的方法  my_electric_car.start()  # 输出: Car is starting...  # 调用子类特有的方法  my_electric_car.recharge()  # 输出: Battery is recharging...

5、多态(Polymorphism)

    多态是指不同的对象对同一消息做出不同的响应。在面向对象的编程语言中,这通常通过方法的重写(Override)和重载(Overload)来实现。

    假设我们有一个Vehicle(车辆)类,以及它的两个子类Car(汽车)和Bike(自行车)。它们都有一个move()方法,但实现方式不同。在这个例子中,move()方法在不同的对象上展示了不同的行为,这就是多态性的体现。

# 定义一个名为Vehicle(车辆)的基类。它有一个名为move(移动)的方法class Vehicle:      def move(self):          pass  # 抽象方法,具体实现在子类中  # 定义一个名为Car(汽车)类的类,该类继承了Vehicle类,并重写了move方法。 class Car(Vehicle):      def move(self):          print("Car is moving on wheels...")  # 定义一个名为Bike(自行车)类的类,该类继承了Vehicle类,并重写了move方法。class Bike(Vehicle):      def move(self):          print("Bike is moving on pedals...")    # 创建一个Vehicle列表,但包含Car和Bike对象  vehicles = [Car(), Bike()]    # 使用循环对列表中的每个对象调用move方法,展示多态性  for vehicle in vehicles:      vehicle.move()      # 输出: Car is moving on wheels... 和 Bike is moving on pedals...
  • 43
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值