拾光记录
218个文档 导航 作者 Gitee
随笔记录4
Hexo博客:基础使用Hexo博客:Next主题Hexo博客:Next进阶使用Hexo博客:Next高级配置
前端知识4
基础知识17
Vue框架19
UniApp14
微信小程序1
Java编程6
Java基础15
SpringBoot31
SpringMVC18
MyBatis9
SpringCloud15
中间件2
数据库4
MySQL13
Redis8
MongoDB10
其他数据库1
Python编程6
Python基础知识Python语法yolo目标检测OpenCV的使用及树莓派平台condauv管理工具
Linux12
Linux常用命令Jar启动脚本VirtualBox安装CentOSVirtualBox安装Ubuntu树莓派安装及使用frp内网穿透ArchLinux:基础系统安装ArchLInux:图形化界面安装ArchLinux:常用软件ArchLinux:深度优化ArchLinux:NiriArchLinux:模块记录
软件工具12
IDEAGitMavenGradleNginx安装Nginx配置JMeter压测OllamaRustFSPicGoVSCodeDocker
创意设计2
Blender:入门知识UI设计基础知识
AI相关9
Claude CodeHermes AgentOpenAI基本使用OpenAI工具调用OpenAI记忆管理OpenAI推理执行OpenAI开发框架Langchainllama.cpp

面向对象和面向过程

面向过程(POP):面向过程是具体到每一个行为,按顺序执行

面向对象(OOP):面向对象是一种编程思想,将现实世界中的事物抽象为对象,每个对象既包含数据(属性)也包含操作数据的方法(行为

类与对象

面向对象编程最基础的是对象,类是所有对象的抽象模板,对象是类的一个具体实例

成员变量和局部变量

成员变量是对象的属性,伴随对象出生与消亡,有默认值,可跨方法访问;局部变量是方法的临时工,随方法生灭,必须初始化,只能在本方法内干活

命名冲突与就近原则

当成员变量与局部变量同名时,局部变量优先(就近原则),如需访问成员变量,需用this(实例)或类名(静态)加以区分

this关键字

用来指代当前类的实例对象,用于调用当前类的属性和方法

静态代码块

仅在类被加载时加载一次

代码块执行顺序

代码块、静态代码块、父子类构造器执行顺序

  1. 父类的静态代码块
  2. 子类的静态代码块
  3. 父类的代码块
  4. 父类的构造器
  5. 子类的代码块
  6. 子类的构造器

类访问权限

访问修饰符 同类内 同包内 子类(不同包) 任何地方
private × × ×
默认(无修饰符) × ×
protected ×
public

方法重写和重载

重载是同一个类中的横向扩展,重写是父子类之间的纵向覆盖

重载规则

重写规则

前提是继承了父类

封装

保证数据安全性,把数据(属性)和操作数据的方法(行为)捆绑在一起,并对外隐藏内部实现细节,只暴露必要的访问接口

继承

允许一个类(子类)基于另一个类(父类)来构建,复用父类的属性和方法,并在此基础上扩展或改写自己的特有行为

误区1:子类继承了父类的所有内容

private 成员、构造方法、静态初始化块都不被继承。子类只能通过父类的 public/protected 方法间接访问 private 数据

误区2:继承是为了复用代码(唯一目的)

继承更重要的目的是建立类型体系,实现多态。List 接口有 ArrayList、LinkedList 等多个实现,它们共用一个 List 类型,这才是继承的核心价值

误区3:继承层次越深越好

深层继承链会导致代码难以理解和维护。通常建议继承深度不超过 3 层,过深时应考虑使用组合或接口

多态

多态就是同一个行为(方法调用)在不同对象身上表现出不同的形态。它建立在封装和继承的基础之上,是让代码具备扩展性和灵活性的魔法

多态的三个必要条件

  1. 继承:存在父子类关系(或接口实现关系)
  2. 重写:子类重写了父类的方法
  3. 父类引用指向子类对象Parent p = new Child()

抽象

核心思想:只关注“做什么”,不关注“怎么做”,它让代码面向“概念”编程,而不是面向“实现”编程,是软件具备可扩展性和可维护性的根基,没有抽象,就没有真正的面向对象

抽象方法所在的类,必须定义为抽象类,抽象类不能被实例化,只能实例化其子类

接口

接口(Interface)是面向对象编程中实现抽象和多态的核心工具,它定义了一组行为规范或契约,规定了实现类必须具备哪些能力,但不关心这些能力具体怎么实现,解决了代码的解耦合问题

接口和抽象类的区别

设计层面的本质区别

接口能替代抽象类吗?

不能。 根本原因:

包装类

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

异常

面向对象和面向过程类与对象成员变量和局部变量命名冲突与就近原则this关键字静态代码块代码块执行顺序类访问权限方法重写和重载重载规则重写规则封装继承误区1:子类继承了父类的所有内容误区2:继承是为了复用代码(唯一目的)误区3:继承层次越深越好多态多态的三个必要条件抽象接口接口和抽象类的区别接口能替代抽象类吗?包装类异常