Java 面向对象知识整理

1️⃣ 基础概念

类(Class)

  • 描述一个群体,是对象的模板。
  • 包含数据(属性)和方法(行为)。

对象(Object)

  • 类的实例,代表具体事物。
  • 在内存中占据一块区域(堆内存)。
  • 谁的数据谁存储,例如学生的数据存储在学生对象里。

面向对象(OOP)

  • 把相关的数据和方法组成整体来看,万物皆对象
  • 原则:谁的数据谁存储,谁的方法谁调用。

2️⃣ 创建对象

ClassName obj = new ClassName(); // new 类名()
  • 先有类,再有对象。
  • 构造器(Constructor)在对象创建时初始化数据。

this 关键字

  • 指代当前对象。
  • 用于解决变量名称冲突,例如构造器参数和成员变量同名:
public class Student {
    private String name;
    public Student(String name) {
        this.name = name; // this.name 指成员变量
    }
}

3️⃣ 封装(Encapsulation)

  • 合理隐藏、合理暴露。
  • 成员变量一般声明为 private,通过 get/set 方法访问。

实体类(Entity Class)

  • 只存取数据,不做业务处理。
  • 便于数据与业务分层。

4️⃣ 静态成员(static)

  • 静态变量 / 静态方法属于类,不属于对象。
  • 调用方式:ClassName.staticMethod()ClassName.staticField

用途

  • 数据只需要一份,需要被共享时。
  • 工具类通常用静态方法。

注意

  • 静态方法不能直接访问对象成员变量。
  • 静态方法中没有 this

5️⃣ 继承(Inheritance)

  • 描述类与类之间的关系,让子类继承父类的属性和方法。

目的

  • 减少重复代码。
  • 提升代码可维护性和扩展性。

继承规则

  • Java 单继承(每个类只能继承一个父类),可多层继承。
  • 就近原则:访问属性/方法优先使用子类,再父类。
  • super:调用父类方法或构造器。
  • this:调用本类的其他构造器,两者不能同时出现。

方法重写(Override)

  • 子类可以重新实现父类方法。
  • 注解 @Override 可增强可读性和安全性。
限制
  • 子类权限 ≥ 父类权限
  • 返回类型可协变(子类可缩小)
  • 私有方法、静态方法不能被重写
常见场景
  • 重写 toString() 方法

6️⃣ 多态(Polymorphism)

前提

  • 继承/实现关系 + 方法重写。

表现

Animal a = new Dog(); // 多态
a.eat();              // 调用的是 Dog 的 eat 方法

多态优点

  1. 解耦:右边对象可自由扩展,不影响父类引用。
  2. 易扩展和维护:父类作为参数,可以接受任意子类。

多态缺点

  • 不能调用子类独有功能,需要类型判断后向下转型。

7️⃣ 类设计建议

  1. 合理设计构造器:初始化必需属性。
  2. 封装:私有变量 + get/set。
  3. 静态成员:仅用于共享数据或工具方法。
  4. 继承:减少重复,注意单继承、多层继承规则。
  5. 多态:用于解耦和扩展,但需注意子类独有方法访问问题。
  6. 实体类:只存数据,业务与数据分层。

更多推荐