Java 面向对象初阶 核心知识点汇总(必背手册级),适合零基础到入门后快速回顾、面试/考试/刷题使用。
这份总结聚焦初阶(不涉及接口、抽象类、内部类、Lambda等进阶内容),以最核心、最常考、最容易混淆的点为主,按逻辑顺序组织。
1. 面向对象思想核心(OOP三大特性)
| 特性 | 定义与核心思想 | 目的/好处 | 关键字/实现方式 | 经典一句话记忆 |
|---|---|---|---|---|
| 封装 | 把数据(属性)和操作数据的方法绑定在一起,对外隐藏实现细节 | 提高安全性、便于维护、降低耦合 | private + public getter/setter | “把脏活累活藏起来,只给别人提供按钮” |
| 继承 | 子类继承父类的属性和行为,实现代码复用 | 代码复用、建立类层次关系 | extends(Java单继承) | “子承父业” |
| 多态 | 同一个行为(方法),不同对象有不同表现形式 | 提高程序扩展性、灵活性 | 父类引用指向子类对象 + 方法重写 | “一种调用,多种形态” |
三大特性口诀:
封装藏实现,继承求复用,多态看运行。
2. 类与对象(最基础、最重要)
- 类(Class):抽象的模板,描述一类事物的属性(成员变量)和行为(成员方法)
- 对象(Object/实例):类的具体体现,通过
new关键字创建
// 定义类(模板)
public class Student {
// 属性(成员变量)
String name; // 默认值 null
int age; // 默认值 0
char gender; // 默认值
// 行为(成员方法)
public void study() {
System.out.println(name + "正在学习...");
}
}
// 创建对象(实例化)
Student s1 = new Student(); // 在堆中开辟空间
s1.name = "张三"; // 访问属性
s1.study(); // 调用方法
内存图必会(面试/笔试常考):
- 栈:保存引用(s1)
- 堆:保存对象实体(属性值)
- 方法区:保存类信息(字节码)
3. 封装(Encapsulation)——最常考的初阶点
核心操作:
- 属性用
private修饰(隐藏) - 提供
public的getXxx()/setXxx()方法控制访问
public class Person {
private String name; // 私有化
private int age;
// getter
public String getName() {
return name;
}
// setter(可加逻辑校验)
public void setName(String name) {
this.name = name; // this必会!
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄不合法!");
}
}
}
this关键字(超级高频):
- 区分局部变量和成员变量
- 调用本类的其他构造方法(this(参数))
- 作为方法返回值(return this)
4. 构造方法(Constructor)——创建对象的核心
特点:
- 方法名与类名完全相同
- 没有返回值类型(连void都没有)
- 每个类都有默认无参构造(你不写编译器给)
public class Car {
private String brand;
private double price;
// 显式无参构造(常用于初始化默认值)
public Car() {
System.out.println("无参构造被调用");
}
// 带参构造(最常用)
public Car(String brand, double price) {
this.brand = brand;
this.price = price;
}
// 重载构造
public Car(String brand) {
this(brand, 0.0); // 构造方法间调用
}
}
面试必问:构造方法的作用? → 初始化对象属性
5. 方法重载(Overload)——编译时多态
同一类中,方法名相同,参数列表不同(数量、类型、顺序),与返回值无关。
public void print(int a) {}
public void print(double a) {}
public void print(int a, String b) {}
6. 继承(extends)基础
public class Animal {
String name;
int age;
public void eat() {
System.out.println("吃东西");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("汪汪");
}
// 方法重写(Override)——运行时多态基础
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
方法重写规则(必背):
- 方法名、参数列表必须完全相同
- 返回值类型:基本类型必须相同,引用类型≤父类返回值类型
- 访问权限不能更严格(子≥父)
- 抛出异常不能更广
@Override注解强烈推荐写上
super关键字(高频):
- super.属性/方法 → 访问父类
- super() → 调用父类构造(必须是第一行)
7. 多态(Polymorphism)——初阶最重要概念
核心一句话:父类引用指向子类对象
Animal a = new Dog(); // 多态写法
a.eat(); // 执行Dog的eat() → 汪汪吃骨头
多态使用前提(三要素缺一不可):
- 有继承/实现关系
- 子类重写了父类方法
- 父类引用指向子类对象
多态的好处:
- 提高代码扩展性(形参写父类类型,可传入任意子类)
- 方法参数统一(List 可以放Dog、Cat)
缺点:
- 不能直接使用子类特有成员(需向下转型)
// 向下转型(强转)
Dog d = (Dog) a;
d.bark(); // 现在可以调用Dog独有方法
8. 访问权限修饰符(权限从大到小)
| 修饰符 | 本类 | 同包 | 子类(不同包) | 不同包非子类 |
|---|---|---|---|---|
| public | √ | √ | √ | √ |
| protected | √ | √ | √ | × |
| 默认 | √ | √ | × | × |
| private | √ | × | × | × |
9. 快速记忆口诀 & 常考对比
- this vs super
- this:本类
- super:父类
- 重载 vs 重写
- Overload:同一类、方法名相同、参数不同
- Override:子父类、方法签名相同、逻辑不同
- new vs extends
- new:创建对象
- extends:建立继承关系
- private 属性 → 必须通过 public 方法访问(封装经典体现)
掌握以上内容,Java面向对象初阶基本就算打通了。建议:边背边写代码,尤其是this、super、重写、多态转型这几块,多敲几遍内存图和代码。
有具体知识点想再深入(比如this调用构造、final关键字、static初识、对象数组等),可以继续问我!加油!