### Java基础知识点总结 #### 一、封装与继承 **封装**:封装是面向对象编程的一个核心特性,它指的是将数据(属性)和操作这些数据的方法(行为)封装在一起,形成一个整体,即类(Class)。封装提高了代码的安全性和可维护性。 1. **封装的实现**: - 使用访问控制符(如`private`)隐藏类的内部细节。 - 提供公共方法(`public`)来暴露类的功能,同时控制对内部数据的访问。 2. **封装的优点**: - **增强安全性**:通过隐藏内部实现细节,可以更好地控制外部如何访问这些数据。 - **提高可维护性**:当内部实现发生变化时,不会影响到外部调用者。 **继承**:继承是一种创建新类的方式,新类继承了已有类的属性和方法。这种关系通常表示为“is-a”关系。 1. **继承的实现**: - 子类继承父类后可以重写或扩展父类的方法。 - 继承支持代码复用,简化了类的设计。 2. **继承的类型**: - **实现继承**:子类继承父类的所有非私有成员。 - **接口继承**:实现特定接口中的抽象方法。 3. **继承的局限性**: - **耦合性强**:父类的变化会影响到所有子类。 - **设计复杂**:多层继承可能导致设计变得复杂。 - **使用不当**:错误地使用继承可能会导致问题。 4. **注意事项**: - **遵循“is-a”原则**:只有在子类确实是父类的一种特殊形式时才使用继承。 - **单继承**:Java只支持单继承,即一个类只能直接继承自一个父类。 - **构造器传递**:在子类构造器中必须首先调用父类的构造器(通过`super()`)。 #### 二、组合与关联 **组合**(has-a):组合描述了类之间的包含关系,即一个类作为另一个类的成员变量。这是一种强拥有关系,被包含的类实例通常不能独立于容器类存在。 1. **组合的特点**: - 一个类包含另一个类的对象作为其成员变量。 - 被包含的类实例生命周期依赖于容器类。 **关联**(use-a):关联表示两个类之间较弱的关系,其中一个类持有另一个类的引用,但这个引用不是该类的一部分。 1. **关联的特点**: - 一个类使用另一个类的对象,但没有拥有关系。 - 关联可以是单向、双向或多向的。 #### 三、多态 **多态**:多态是指允许不同类的对象对同一消息做出响应的能力。多态分为静态多态和动态多态。 1. **静态多态**: - 主要指方法的重载(Overloading),即在一个类中定义多个同名但参数列表不同的方法。 2. **动态多态**: - 指方法的重写(Overriding),即在子类中重写父类的方法,实现运行时的多态性。 #### 四、抽象类与接口 **抽象类**:抽象类是一种不能被实例化的类,通常用于定义类的一组通用行为。 1. **抽象类的使用**: - 抽象类中可以包含抽象方法(未实现的方法)和具体方法。 - 子类必须实现所有的抽象方法才能被实例化。 2. **抽象类的特点**: - 抽象类可以有构造器、属性等。 - 抽象类可以被继承。 **接口**:接口是一组抽象方法的集合,它定义了类的行为规范。 1. **接口的使用**: - 接口中只能包含抽象方法(默认为`public abstract`)和常量(默认为`public static final`)。 - 类可以通过实现接口来提供接口中定义的方法的具体实现。 2. **接口的特点**: - 接口可以被多个类实现,从而实现多态性。 - 一个类可以实现多个接口。 - 接口中不能包含具体实现方法(除非使用Java 8的默认方法或静态方法)。 3. **抽象类与接口的区别**: - **继承关键字**:抽象类使用`extends`关键字继承,而接口使用`implements`关键字实现。 - **方法实现**:抽象类可以包含部分实现的方法,而接口中的方法默认都是抽象的。 - **数量限制**:一个类只能继承一个抽象类,但可以实现多个接口。 #### 五、集合框架 **集合框架**:Java集合框架提供了多种数据结构来存储和操作数据集。 1. **集合框架的分类**: - `Collection`接口是所有集合类的根接口。 - `Set`接口不允许重复元素。 - `List`接口保持元素的插入顺序。 2. **常用集合类**: - `ArrayList`:动态数组实现,支持快速随机访问。 - `LinkedList`:链表实现,支持高效的插入和删除操作。 - `HashSet`:基于哈希表的实现,不保证元素的顺序。 - `TreeSet`:基于红黑树的实现,元素自动排序。 - `HashMap`:基于哈希表的键值对映射实现。 - `TreeMap`:基于红黑树的键值对映射实现。 3. **集合类的选择**: - **ArrayList**:适用于频繁的随机访问场景。 - **LinkedList**:适用于频繁的插入和删除操作。 - **HashSet**/`TreeSet`:根据是否需要排序选择合适的集合类。 - **HashMap**/`TreeMap`:根据是否需要排序选择合适的映射类。 #### 六、泛型的使用 **泛型**:泛型是Java 5引入的新特性,允许编译时检查类型安全,并且所有的强制转换都是自动和隐式的。 1. **泛型的定义**: - 泛型类:定义时指定一个或多个类型参数。 - 泛型方法:方法定义时指定类型参数。 2. **泛型的优点**: - **类型安全**:避免了类型转换错误。 - **代码复用**:使用相同的代码处理不同类型的数据。 3. **泛型的实例**: - 创建泛型列表: ```java ArrayList<Users> users = new ArrayList<>(); ``` 通过以上内容,我们可以看到Java语言的强大之处在于它的封装、继承、多态机制,以及丰富的集合框架和泛型的支持,这些特性极大地提升了程序的灵活性、可维护性和安全性。
- 粉丝: 2
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助