CSNotesCSNotes
MySQL
Java
SSM
Redis
学习路线
TODO
实用工具
GitHub
MySQL
Java
SSM
Redis
学习路线
TODO
实用工具
GitHub
  • 第一章 Java 基础

    • 一、OOP 三大特性
    • 二、8 种基本数据类型
    • 三、BigDecimal
    • 四、类的访问权限
    • 五、包装类
    • 六、继承
    • 七、多态
    • 八、final 关键字
    • 九、static 关键字
    • 十、抽象类
    • 十一、接口
    • 十二、四种内部类
    • 十三、Lambda+ 函数式接口
    • 十四、枚举 enum
    • 十五、反射
    • 十六、注解
    • 十七、泛型
  • 第二章 集合

    • 一、集合框架总览
    • 二、ArrayList 源码解析
    • 三、LinkedList 源码分析
    • 四、HashSet
    • 五、String 底层结构
    • 六、String 常量池与 equals
    • 七、StringBuffer
    • 八、时间类:4 代演进史
    • 九、Stream 流
    • 十、工具类设计规范
    • 十一、Assert
    • 十二、常用工具类
  • 第三章 设计模式

    • 一、七大设计原则
    • 二、单例模式(饿汉式)
    • 三、装饰器模式
    • 四、策略模式
  • 第四章 异常

    • 一、Java 异常体系
    • 二、异常(完整版)
  • 第五章 并发

    • 一、多线程基础 JUC
    • 二、多线程进阶
    • 三、线程池
  • 第六章 JVM

    • 一、JSON 库
  • 第七章 RPC

    • 一、RPC 定义
  • 第八章 消息队列

    • 一、MQ 业务解耦
  • 第九章 JDK17 新特性

    • JDK17 新特性
    • 项目

一、OOP 三大特性

你是一个 Java 实习生,今天刚入职,Leader 让你写一个 Employee 类(有名字/工资/打卡)

public class Employee {
    private Long id;
    private String name;
    private Integer age;
    private Integer salary;

    public Employee(Long id, String name, Integer age, Integer salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSalary() {
        return salary;
    }

    public void setSalary(Integer salary) {
        this.salary = salary;
    }
}

Java 编程的世界观是什么?世界是由对象组成的,对象有数据(字段)和行为(方法),数据和行为打包在一起。

(一)封装

1.封装是什么

封装=【把对象内部状态藏起来(private 字段),对外只暴露有限且合法的访问通道(public 方法)】。外部代码想改工资、访问数据必须走 setter 方法。

2.为什么要写 8 个 setter/getter 不直接写public Integer salary;?

不封装反例

同事一行代码把张三工资改成 9 个 9,Employee zhangsan=new Employee(1001L,"张三",24,25000);zhangsan.salary=999999999;//直接改 public 字段。Leader 查账时,找不到是谁改的,什么时候改的,为什么改

(二)继承(经理是一个员工:is-a 关系)

1.继承是什么?

继承=子类 is a 父类:自动拥有父类所有非 private 的属性和方法,不用重复写 4 个相同字段 +8 个 getter/setter。

public class Manager extends Employee {
    private String bonus;

    public Manager(Long id, String name, Integer age, Integer salary, String bonus) {
        super(id, name, age, salary);
        this.bonus = bonus;
    }

    public String getBonus() {
        return bonus;
    }

    public void setBonus(String bonus) {
        this.bonus = bonus;
    }
}

继承 2 大坑

单继承限制

组合优于继承

(三)多态(同一句调用,不同对象不同表现)

1.多态是什么?

多态=同一方法调用(calcYearSalary()),不同对象(普通员工 vs 经理),表现不同(12 个月 vs12+3 个月)。

2.多态 3 个前提

(1)有继承

(2)有重写

(3)父类引用指向子类对象

编辑此页
上次更新: 2026/9/26 19:37
Next
二、8 种基本数据类型