20240218

2024/2/18

# 1 面向对象

# 封装

任何东西都可以封装成一个对象,有属性、有方法,外部通过调用方法来修改对象

# 继承

子类继承父类,单继承,子类拥有父类的属性和方法(private除外)

# 多态

一个类可以有多个实现,比如超市收银打折接口,有不同的场景不同折扣时,可以一个方法,多个实现(实现不同的折扣逻辑)

# ai的理解:

您的理解大致正确,但可以进一步细化以确保全面性和准确性:

# 封装 (Encapsulation)

  • 封装是将数据(属性或成员变量)和与之相关联的操作(方法或成员函数)捆绑在一起,形成一个独立的对象。通过封装,对象可以对外隐藏其内部状态和实现细节,仅暴露必要的接口给外部世界。
  • 这样做的好处在于保护了数据的安全性,防止外部随意修改;同时增强了代码的复用性和可维护性,因为用户只需知道如何通过接口与对象交互,而无需关心对象内部的具体实现。

# 继承 (Inheritance)

  • 继承允许创建一个类(子类)从另一个类(父类)中派生出来,继承其非私有(如 public 和 protected)的属性和方法。
  • 单继承是指在某些语言(如Java、C#)中,一个类只能直接继承自一个基类,虽然多级继承(子类继承父类,父类再继承祖父类等)仍然是可能的。
  • 子类不仅继承父类的特性,还可以添加新的属性和方法,或者重写(override)父类的方法以提供不同的实现。

# 多态 (Polymorphism)

  • 多态意味着同一个接口(方法名)可以被不同类的对象实例所响应,并产生不同的行为结果。有两种主要形式:
    • 编译时多态(静态多态):例如通过函数重载或运算符重载实现,编译器根据传入参数类型确定调用哪个方法。
    • 运行时多态(动态多态):常见于面向对象编程中,通过虚函数、抽象类以及接口实现,实际调用的方法是在运行时基于对象的实际类型决定的。
  • 您给出的例子描述了一个场景,在超市收银系统中定义了一个打折接口,不同类型的折扣策略(子类)可以实现这个接口来提供各自的打折逻辑,这就是多态的一种应用,同一方法签名“打折”可以根据具体的策略对象表现出不同的行为。