一、面向对象编程OOP基础1. 核心思想将现实世界的事物抽象为“对象”对象包含属性数据和行为方法通过对象间的协作完成复杂任务。2. 三大基本特征封装将数据和操作数据的方法绑定在一起隐藏内部实现细节仅对外提供访问接口如录音机的按钮控制。继承子类继承父类的属性和方法实现代码复用形成类的层次关系如“人→学生/工人/教师”。多态同一方法在不同对象中有不同实现。二、类与对象的基础定义1. 类的定义语法 [类修饰符] class 类名 [extends 父类] [implements 接口] { 类体 }类体包含成员变量属性描述对象的状态如圆的半径、坐标。成员方法行为描述对象的功能如圆的面积、周长计算。2. 对象的创建与使用实例化对象通过 new 关键字创建对象语法 类名 对象名 new 类名([参数]);对象的引用通过 . 运算符访问成员变量和方法对象名.成员变量名;对象名.成员方法名([实参列表]);对象比较 比较的是对象的内存地址判断值是否相等需用 equals() 方法。三、核心方法详解1. 构造方法特点方法名与类名相同无返回值对象实例化时自动调用用于初始化对象属性。规则若未自定义构造方法系统会自动生成一个无参空构造方法。支持重载方法名相同参数列表不同实现不同方式的初始化。2. 方法重载定义同一个类中多个方法方法名相同但参数列表数量、类型、顺序不同。作用为相似功能的方法提供统一调用方式如 sum(int a, int b) 和 sum(int a, int b, int c) 。注意返回值类型不参与重载的区分。3. main()方法Java程序的执行入口格式固定 public static void main(String[] args) 。args 用于接收命令行参数参数按顺序存入数组如 java MainTest I Love China 会将 I Love China 存入 args[0] ~ args[2] 。四、实例变量 vs 静态变量static特性 - 实例变量非static- 静态变量static归属 - 属于对象每个对象有独立副本 - 属于类所有对象共享同一副本访问方式 - 对象名.变量名 - 类名.变量名 或 对象名.变量名生命周期 - 随对象创建而存在对象销毁而消失 - 随类加载而初始化程序结束才销毁静态方法同样属于类可直接通过类名调用方法中不能直接访问非静态成员变量/方法。五、方法调用的参数传递1. 值传递基本数据类型实参的值复制给形参形参的修改不影响实参。2. 引用传递引用数据类型如数组、对象传递的是对象的内存地址形参和实参指向同一对象形参的修改会直接影响实参。六、包package与模块Java 91. 包的定义与引入定义 package 包名1.包名2; 必须写在源文件第一行用于管理类避免命名冲突。引入 import 包名1.包名2.类名; 或 import 包名1.包名2.*; 引入包中所有类。2. 模块ModuleJava 9引入通过 module-info.java 定义模块实现模块间的依赖和导出控制如 exports 包名; 声明可被其他模块访问的包 requires 模块名; 声明依赖的模块。七、类及成员修饰符访问权限修饰符 - 同一类 - 同一包 - 不同包子类 - 不同包非子类private - ✅ - ❌ - ❌ - ❌default无修饰符- ✅ - ✅ - ❌ - ❌protected ✅ - ✅ - ✅ - ❌public - ✅ - ✅ - ✅ - ✅final修饰符修饰类该类为“最终类”不能被继承。修饰方法该方法不能被子类重写。修饰变量该变量为常量初始化后不能修改。八、实用案例与工具1. 冒泡排序通过嵌套循环比较并交换相邻元素实现数组排序。2. 对象计数器利用静态变量记录对象创建和销毁的数量。3. Scanner类用于从控制台获取用户输入需导入 java.util.Scanner 包。4. 垃圾回收Java自动回收无用对象的内存也可通过 System.gc() 手动触发。
Java 第四章 类和对象设计
一、面向对象编程OOP基础1. 核心思想将现实世界的事物抽象为“对象”对象包含属性数据和行为方法通过对象间的协作完成复杂任务。2. 三大基本特征封装将数据和操作数据的方法绑定在一起隐藏内部实现细节仅对外提供访问接口如录音机的按钮控制。继承子类继承父类的属性和方法实现代码复用形成类的层次关系如“人→学生/工人/教师”。多态同一方法在不同对象中有不同实现。二、类与对象的基础定义1. 类的定义语法 [类修饰符] class 类名 [extends 父类] [implements 接口] { 类体 }类体包含成员变量属性描述对象的状态如圆的半径、坐标。成员方法行为描述对象的功能如圆的面积、周长计算。2. 对象的创建与使用实例化对象通过 new 关键字创建对象语法 类名 对象名 new 类名([参数]);对象的引用通过 . 运算符访问成员变量和方法对象名.成员变量名;对象名.成员方法名([实参列表]);对象比较 比较的是对象的内存地址判断值是否相等需用 equals() 方法。三、核心方法详解1. 构造方法特点方法名与类名相同无返回值对象实例化时自动调用用于初始化对象属性。规则若未自定义构造方法系统会自动生成一个无参空构造方法。支持重载方法名相同参数列表不同实现不同方式的初始化。2. 方法重载定义同一个类中多个方法方法名相同但参数列表数量、类型、顺序不同。作用为相似功能的方法提供统一调用方式如 sum(int a, int b) 和 sum(int a, int b, int c) 。注意返回值类型不参与重载的区分。3. main()方法Java程序的执行入口格式固定 public static void main(String[] args) 。args 用于接收命令行参数参数按顺序存入数组如 java MainTest I Love China 会将 I Love China 存入 args[0] ~ args[2] 。四、实例变量 vs 静态变量static特性 - 实例变量非static- 静态变量static归属 - 属于对象每个对象有独立副本 - 属于类所有对象共享同一副本访问方式 - 对象名.变量名 - 类名.变量名 或 对象名.变量名生命周期 - 随对象创建而存在对象销毁而消失 - 随类加载而初始化程序结束才销毁静态方法同样属于类可直接通过类名调用方法中不能直接访问非静态成员变量/方法。五、方法调用的参数传递1. 值传递基本数据类型实参的值复制给形参形参的修改不影响实参。2. 引用传递引用数据类型如数组、对象传递的是对象的内存地址形参和实参指向同一对象形参的修改会直接影响实参。六、包package与模块Java 91. 包的定义与引入定义 package 包名1.包名2; 必须写在源文件第一行用于管理类避免命名冲突。引入 import 包名1.包名2.类名; 或 import 包名1.包名2.*; 引入包中所有类。2. 模块ModuleJava 9引入通过 module-info.java 定义模块实现模块间的依赖和导出控制如 exports 包名; 声明可被其他模块访问的包 requires 模块名; 声明依赖的模块。七、类及成员修饰符访问权限修饰符 - 同一类 - 同一包 - 不同包子类 - 不同包非子类private - ✅ - ❌ - ❌ - ❌default无修饰符- ✅ - ✅ - ❌ - ❌protected ✅ - ✅ - ✅ - ❌public - ✅ - ✅ - ✅ - ✅final修饰符修饰类该类为“最终类”不能被继承。修饰方法该方法不能被子类重写。修饰变量该变量为常量初始化后不能修改。八、实用案例与工具1. 冒泡排序通过嵌套循环比较并交换相邻元素实现数组排序。2. 对象计数器利用静态变量记录对象创建和销毁的数量。3. Scanner类用于从控制台获取用户输入需导入 java.util.Scanner 包。4. 垃圾回收Java自动回收无用对象的内存也可通过 System.gc() 手动触发。