益智教育网

Java面向对象思维导图2025最新版更新了哪些核心内容?

Java 面向对象 思维导图

中心主题:Java 面向对象编程


核心三大特性

  • 1 封装

    Java面向对象思维导图2025最新版更新了哪些核心内容?-图1

    • 定义:将数据(属性)和操作数据的方法(行为)捆绑到一个单元中(即类),并对外部隐藏对象的内部实现细节。
    • 目的
      • 隐藏实现细节:使用者只需知道如何通过公共接口与对象交互,无需关心内部复杂逻辑。
      • 提高安全性:防止外部代码随意修改对象内部状态,保证数据的有效性和完整性。
      • 降低耦合度:模块之间通过稳定的接口通信,内部实现可以独立修改而不影响其他模块。
    • 实现方式
      • 访问修饰符:使用 private 将成员变量(属性)设为私有,使其只能在类内部访问。
      • 公共方法:提供 publicgetter(获取方法)和 setter(设置方法)作为与私有成员变量交互的公共接口。
        • getter:用于读取私有属性的值。
        • setter:用于修改私有属性的值,并在方法内部加入数据校验逻辑,确保赋值的有效性。
  • 2 继承

    • 定义:允许一个类(子类/派生类)继承另一个类(父类/超类)的属性和方法,这是一种“is-a”(是一个)的关系。
    • 目的
      • 代码复用:子类可以复用父类的代码,避免重复编写。
      • 建立类层次结构:形成清晰的逻辑关系,便于管理和扩展。
    • 关键字extends
    • 特点
      • 单继承:Java 中一个类只能有一个直接父类(但可以通过接口实现多重继承的效果)。
      • 传递性:C 继承 B,B 继承 A,C 也拥有 A 的所有非私有成员。
    • 方法重写
      • 子类可以提供一个与父类方法具有相同方法签名(方法名、参数列表)的实现。
      • 目的是为了实现子类特有的行为,覆盖掉父类的默认行为。
      • 需要 @Override 注解来标记,增强代码可读性,并让编译器检查是否满足重写规则。
  • 3 多态

    • 定义:指同一个接口,使用不同的实例而执行不同操作的能力,核心思想是“同一操作,作用于不同的对象,产生不同的执行结果”,这是一种“has-a”(有一个)或“can-do”(能做)的关系。
    • 前提条件
      • 继承:必须有类之间的继承关系。
      • 重写:子类必须重写父类的方法。
      • 父类引用指向子类对象Parent p = new Child(); 这是多态最典型的写法。
    • 优点
      • 灵活性和可扩展性:可以编写通用的代码,来处理不同类型的对象,降低代码的耦合度。
      • 可替换性:允许子类对象替换父类对象,而不影响程序的正确性。
    • 多态的体现
      • 方法重写:最常见的形式。
      • 方法重载:在同一个类中,编译时多态。

关键概念

  • 1 类

    • 定义:创建对象的模板或蓝图,它定义了一组属性(成员变量)和方法(成员方法)。
    • 组成
      • 成员变量
      • 成员方法
      • 构造器
    • 示例class Dog { ... }
  • 2 对象

    • 定义:类的实例,是真实世界事物的具体实体,占用内存空间。
    • 创建:使用 new 关键字调用构造器来创建。
    • 示例Dog myDog = new Dog();
  • 3 抽象

    • 定义:与封装紧密相关,指忽略与当前目标无关的细节,只关注与当前目标相关的核心特征,抽象是封装的逻辑基础。
    • 实现方式
      • 抽象类:使用 abstract 关键字修饰的类,可以包含抽象方法(只有声明,没有实现)和具体方法。
      • 接口:一种特殊的抽象类型,它只包含方法的声明(Java 8+ 后可以有 defaultstatic 方法实现),没有成员变量(除了 public static final 常量)。
  • 4 接口

    • 定义:对行为的抽象,定义了一套规范,一个类可以实现一个或多个接口,表示该类具备接口所描述的行为。
    • 关键字interface
    • 特点
      • 方法默认为 public abstract
      • 变量默认为 public static final
      • 支持多重实现class MyClass implements InterfaceA, InterfaceB { ... }
    • 作用:实现解耦,定义能力标准。
  • 5 抽象类

    • 定义:一种不能被实例化的类,通常作为父类,用于被继承。
    • 关键字abstract
    • 特点
      • 可以包含抽象方法(无实现)和具体方法(有实现)。
      • 可以包含构造器,供子类调用。
      • 不能与 finalprivatestatic 一起修饰抽象方法(static 可以,但很少用)。
    • 与接口的区别: | 特性 | 抽象类 | 接口 | | :--- | :--- | :--- | | 继承 | 单继承 | 多实现 | | 成员变量 | 无特殊限制 | 默认 public static final | | 方法 | 可包含抽象方法和具体方法 | Java 7 前:只有抽象方法;Java 8+:可包含 defaultstatic 方法 | | 构造器 | 有 | 无 | | 目的 | 代码复用,表达 "is-a" 关系 | 定义规范,表达 "can-do" 关系 |

高级特性

  • 1 关键字 this

    • 定义:一个引用变量,指向当前对象。
    • 用途
      • 区分成员变量和局部变量this.name = name;
      • 调用本类的构造器this()this(args),必须在构造器第一行。
      • 作为方法的参数传递:将当前对象传递给其他方法。
  • 2 关键字 super

    • 定义:一个引用变量,指向当前对象的父类对象。
    • 用途
      • 调用父类的成员变量super.name;
      • 调用父类的成员方法super.parentMethod();
      • 调用父类的构造器super(args);,必须在子类构造器的第一行。
  • 3 构造器

    • 定义:用于创建和初始化对象的方法。
    • 特点
      • 方法名与类名相同。
      • 没有返回值类型(连 void 都没有)。
      • 在创建对象时由 new 关键字自动调用。
    • 重载:一个类可以有多个构造器,只要它们的参数列表不同(参数个数、类型或顺序不同)。
    • 构造器链:子类构造器默认会调用父类的无参构造器(super()),如果父类没有无参构造器,子类必须显式调用 super(args)
  • 4 静态

    • 定义:使用 static 关键字修饰的成员(变量、方法、代码块、内部类)属于类本身,而不是类的某个实例。
    • 特点
      • 类级别:所有实例共享一份静态成员。
      • 无需创建对象即可访问:通过 ClassName.staticMember 访问。
      • 生命周期:随类的加载而加载,随类的卸载而卸载,生命周期比对象长。
    • 用途
      • 静态变量:被所有对象共享的数据,如计数器。
      • 静态方法:不依赖于任何对象实例的方法,通常用于工具类(如 Math 类)。
      • 静态代码块:在类加载时执行,且只执行一次,用于进行静态资源的初始化。
  • 5 内部类

    • 定义:定义在另一个类内部的类。
    • 类型
      • 成员内部类:非 static,可以无条件访问外部类的所有成员。
      • 静态内部类static,只能访问外部类的静态成员。
      • 局部内部类:定义在方法或作用块内,作用域仅限于该方法或块内。
      • 匿名内部类:没有类名的局部内部类,常用于实现接口或继承类的实例化,语法简洁。

访问修饰符

修饰符 同一类中 同一包中 不同包子类 不同包非子类
public ✔️ ✔️ ✔️ ✔️
protected ✔️ ✔️ ✔️
default (无修饰符) ✔️ ✔️
private ✔️

最佳实践

  • 1 组合优于继承

    • 原因:继承会破坏封装性,子类与父类高度耦合,父类的任何修改都可能影响子类,组合通过持有其他类的引用来实现功能,耦合度更低,更灵活。
    • 何时用继承:当两个类之间确实存在 "is-a" 的强关系,并且子类是父类的一种特化时。
  • 2 面向接口编程

    • 思想:依赖于抽象(接口),而不是具体实现。
    • 好处:降低模块间的耦合度,提高系统的可扩展性和可维护性,可以轻松地替换具体实现类,而无需修改调用方代码。
  • 3 不可变对象

    • 定义:对象一旦创建,其状态(属性)就不能被改变。
    • 如何创建
      1. 将类声明为 final,防止被继承。
      2. 将所有成员变量设为 privatefinal
      3. 不提供 setter 方法。
      4. 如果成员变量是可变对象,在 getter 方法中返回其防御性拷贝。
    • 优点:线程安全、简单可靠,是构建复杂系统的基础。
分享:
扫描分享到社交APP
上一篇
下一篇