前言
Java是一门纯面向对象的编程语言,面向对象思想也是Java整个体系的核心。
面向对象分为两大阶段:
1. 基础面向对象:类与对象、封装、构造方法、成员变量与局部变量
2. 面向对象进阶:继承、重写、多态、抽象类、接口、权限修饰符、内部类、static、final
一、面向对象思想概述
① 什么是面向对象
面向对象是一种编程思维:
- 将现实事物抽象成类
- 将具体个体实例化为对象
- 通过对象调用功能,完成业务逻辑
面向过程:注重步骤、流程、怎么做
面向对象:注重实体、角色、谁来做
Java核心特征三大件:封装、继承、多态
二、面向对象基础
① 类和对象
- 类:模板、抽象概念(学生类、手机类)
- 对象:类的具体实例(张三、iPhone14)
语法格式
// 定义类 public class Student { // 成员变量 String name; int age; // 成员方法 public void study(){ System.out.println(name + "正在学习"); } }创建对象并使用
public class Test { public static void main(String[] args) { // 创建对象 Student s = new Student(); // 赋值 s.name = "小明"; s.age = 19; // 调用方法 s.study(); } }② 成员变量 vs 局部变量
1. 成员变量:类中方法外,堆内存,默认初始化值
2. 局部变量:方法内,栈内存,必须手动初始化
默认值规则:
- int = 0
- double = 0.0
- boolean = false
- 引用类型 = null
③ 构造方法
作用:创建对象时初始化数据
特点:
- 方法名和类名一致
- 无返回值
- new 对象时自动执行
代码示例
public class Student { String name; int age; // 无参构造 public Student(){ System.out.println("无参构造执行"); } // 有参构造 public Student(String name,int age){ this.name = name; this.age = age; } }④this关键字
- this.成员变量:区分局部变量和成员变量
- this():调用本类构造方法
public Student(String name){ this.name = name; }⑤ 封装(三大特性之一)
核心思想:隐藏数据,暴露方法
实现步骤:
1. 成员变量私有化 private
2. 提供 get/set 方法
封装标准代码
封装优势:
- 保护数据安全
- 统一数据校验
- 代码维护性更强
三、面向对象进阶
① 继承
子类复用父类的属性和方法,代码复用性极强
格式:
public class 子类 extends 父类{}继承演示代码
// 父类 class Person{ public void sleep(){ System.out.println("人需要睡觉"); } } // 子类 class Teacher extends Person{ public void teach(){ System.out.println("老师讲课"); } } public class Test{ public static void main(String[] args) { Teacher t = new Teacher(); t.sleep(); // 继承父类 t.teach(); // 自己独有 } }继承特点:
- Java单继承,只能继承一个父类
- 所有类默认直接或间接继承Object类
② 方法重写
子类对父类原有方法重新实现
重写条件:
1. 方法名、参数列表一致
2. 返回值兼容
3. 访问权限不能更严格
重写案例
class Person{ public void show(){ System.out.println("我是人类"); } } class Student extends Person{ // 重写 @Override public void show() { System.out.println("我是学生"); } }③ 多态
同一个行为,不同对象不同表现
多态实现条件:
1. 继承
2. 方法重写
3. 父类引用指向子类对象
多态完整代码
class Animal{ public void shout(){ System.out.println("动物叫"); } } class Dog extends Animal{ @Override public void shout() { System.out.println("汪汪汪"); } } class Cat extends Animal{ @Override public void shout() { System.out.println("喵喵喵"); } } public class Test { public static void main(String[] args) { // 多态形态 Animal a1 = new Dog(); Animal a2 = new Cat(); a1.shout(); a2.shout(); } }运行结果:
汪汪汪 喵喵喵多态口诀:编译看左边,运行看右边
④ 权限修饰符
四种权限从小到大:
private < 默认 < protected < public
修饰符 本类 同包 子类 任意包
private ✅ ❌ ❌ ❌
默认 ✅ ✅ ❌ ❌
protected ✅ ✅ ✅ ❌
public ✅ ✅ ✅ ✅
⑤ static关键字
静态属于类,不属于对象
特点:
- 随着类加载而加载
- 优先于对象存在
- 被所有对象共享
静态代码演示
public class Student { public static String school = "河南科技学院"; public static void showSchool(){ System.out.println(school); } } // 调用 Student.showSchool();