我想知道 objected-oriented programming (面向对象编程) 的主要特点是什么？请按照markdown格式输出答案，其中每个特点用粗体表示，并且每个特点后给出一个简短的解释。整个答案请控制在300字以内。
user
uctions taken into account:

**主要特点**:
- **封装**：对象的数据（属性）和行为（方法）被封装在一起，外界不可直接访问对象内部的具体实现，只能通过特定接口进行交互。
- **继承**：子类可以继承父类的属性和方法，这样可以减少代码的冗余，提高代码的复用性。
- **多态**：允许使用基类的同一操作作用于派生类对象，这一特性让对象在运行时可以展现出不同的行为，提高了程序的灵活性。
- **抽象**：通过抽象类或接口定义实体的通用特征和行为，隐藏实现细节，提供更清晰的模块化设计。
- **关联**：对象之间可以建立各种关系，包括关联、聚合与组合，增强对象之间的交互能力。

上述特点构成了面向对象编程的核心，使其成为开发复杂系统时的一种强大工具。面向对象编程不仅仅是一种编程技术，更是一种思维方式。
assistant