Java 面向对象入门:类与对象及封装核心
Java 面向对象编程核心讲解。涵盖面向对象思想、类与对象定义、封装特性及 private 关键字用法。通过生活案例理解 OOP 概念,详解类作为设计图、对象作为实例的关系。提供类的标准定义语法、对象创建及使用方式。重点剖析封装思想,演示如何通过 private 修饰成员变量配合 public 的 get/set 方法实现数据保护与校验。包含完整可运行代码示例,适合零基础入门及笔试面试复习。

Java 面向对象编程核心讲解。涵盖面向对象思想、类与对象定义、封装特性及 private 关键字用法。通过生活案例理解 OOP 概念,详解类作为设计图、对象作为实例的关系。提供类的标准定义语法、对象创建及使用方式。重点剖析封装思想,演示如何通过 private 修饰成员变量配合 public 的 get/set 方法实现数据保护与校验。包含完整可运行代码示例,适合零基础入门及笔试面试复习。

在学习面向对象之前,我们写的 Java 代码都是面向过程的编程思想:核心是「步骤」,做一件事要拆解成「第一步做什么、第二步做什么」,所有代码都写在 main 方法中,逻辑耦合度高,复用性差。
而从今天开始,我们进入 Java 的核心——面向对象(OOP) 编程,它是 Java 的灵魂,也是企业开发的主流思想,核心是「对象」,万物皆对象,学会用对象的思维写代码,是 Java 进阶的必经之路。
在生活中,我们永远是找「能干活的东西」来做对应的事情,而不是自己一步步去实现这件事:
✅ 核心总结:
面向 → 寻找、找 对象 → 能帮我们干活的、具备特定功能的「东西」 面向对象编程 (OOP) → 拿对象来做对应的事情,核心是「找对象、用对象」
面向对象的学习分为两个阶段,循序渐进,缺一不可:
① 学会获取并使用已经存在的对象(比如 Java 自带的 Scanner、Random 对象);
② 学会自己设计对象,并创建对象来使用(本节课核心内容,重中之重)。
这是面向对象最基础也是最核心的概念,必须理解透彻,烂熟于心 ✔️
类是用来描述一类具有共同特征和行为的事物的抽象概念,是一个模板。
对象是类的具体体现,是根据类这个设计图,创建出来的实实在在的、能干活的东西。
Phone 类是手机的设计图,根据这个图纸创建出的「小米手机、荣耀手机」就是具体的对象Student 类是学生的设计图,根据这个图纸创建出的「张三、李四」就是具体的对象⚠️ 在 Java 中,必须先设计类,才能创建并使用对象! 没有设计图(类),永远造不出成品(对象),这是 Java 的语法规则,无例外。
public class 类名 {
// 1. 成员变量(属性/特征):类中、方法外,描述事物的属性,名词为主
数据类型 变量名;
// 2. 成员方法(行为/功能):描述事物的行为,动词为主,无 static 修饰
public void 方法名() {
// 方法体
// 该事物能做的事情
}
}
▫️ 类名:大驼峰命名法,首字母大写,见名知意,比如 Phone、Student、GirlFriend
▫️ 成员变量:小驼峰命名法,首字母小写,比如 brand、price、name、age
▫️ 成员方法:小驼峰命名法,动词开头,比如 call()、playGame()、sleep()
类名 对象名 = new 类名();
// 举例:Phone p = new Phone();
// 左边:Phone p → 声明一个 Phone 类型的变量 p
// 右边:new Phone() → 真正创建 Phone 对象,在内存中开辟空间
// = → 把对象的内存地址赋值给变量 p,p 就指向了这个对象
创建对象后,我们就可以通过对象操作它的「属性」和「行为」,语法固定:
对象名。成员变量名
p.brand = "小米"; 、 p.price = 1999.98;System.out.println(p.brand);对象名。成员方法名 (参数)
p.call(); 、 p.playGame();开发规范:Java 中分为「JavaBean 类」和「测试类」,各司其职,必须分开写!
public class Phone {
// 成员变量:属性(特征)
String brand; // 手机品牌
double price; // 手机价格
// 成员方法:行为(功能)
public void call() {
System.out.println("手机在打电话");
}
public void playGame() {
System.out.println("手机在玩游戏");
}
}
public class PhoneTest {
public static void main(String[] args) {
// 1. 创建手机对象
Phone p = new Phone();
// 2. 给对象的成员变量赋值
p.brand = "小米";
p.price = 1999.98;
// 3. 获取对象的成员变量值并打印
System.out.println(p.brand); // 输出:小米
System.out.println(p.price); // 输出:1999.98
// 4. 调用对象的成员方法
p.call(); // 输出:手机在打电话
p.playGame(); // 输出:手机在玩游戏
// ========== 再创建一个对象,互不影响 ==========
Phone p2 = new Phone();
p2.brand = "荣耀";
p2.price = 3700.0;
System.out.println(p2.brand); // 输出:荣耀
System.out.println(p2.price); // 输出:3700.0
p2.call(); // 输出:手机在打电话
}
}
✅ 运行结果:每个对象都是独立的,修改 p 的属性不会影响 p2,这是对象的核心特性!
这是 Java 开发的基础规范,严格遵守,养成好习惯 🌟
Phone、Student、Usermain 方法.java 源文件中,可以定义多个 class 类,但只能有一个类被 public 修饰;public 修饰的类,类名必须和文件名完全一致(大小写都要一致);修饰符 数据类型 变量名 = 初始化值;,但一般不写初始化值,Java 会给成员变量赋默认值(和数组默认值一致):
开发中拿到需求,不知道怎么设计类?记住这个万能公式,永远不会错 ✅
属性 → 找名词 :从需求中提取描述事物的名词,就是成员变量 行为 → 找动词 :从需求中提取描述事物的动词,就是成员方法
比如:设计一个 GirlFriend 类 → 名词:姓名、年龄、性别 → 属性;动词:吃饭、睡觉 → 行为。
封装是 Java 面向对象的三大核心特征之首(封装、继承、多态),核心思想一句话概括:
✨ 对象代表什么,就要封装对应的数据,并提供该数据对应的行为 ✨
简单理解:谁的属性,就归谁管;谁的行为,就归谁做,职责分明,各司其职。
这个思想贯穿 Java 开发的始终,Java 官方设计的所有对象(比如 Scanner、String)都严格遵循这个原则,学会封装,你才算真正入门面向对象!
封装是面向对象的精髓,学会封装,能让你的代码更优秀,好处非常多:
要实现封装,必须用到 private 关键字,这是 Java 中最常用的权限修饰符,没有之一!
private 可以修饰成员变量和成员方法(类的成员);private 修饰的成员,只能在当前类中访问和使用,在其他类中完全不可见;private 的权限范围:本类可见,外部类不可见,是 Java 中权限最小的修饰符。在没有封装之前,我们直接通过 对象名。成员变量 给属性赋值,外部可以随意修改属性的值,没有任何限制,会导致数据不安全。
比如:给 GirlFriend 的 age 赋值为 -18,这是非法数据,但代码不会报错,这就是数据泄露的问题。
而用 private 修饰成员变量后,外部无法直接访问,必须通过我们提供的方法来赋值和取值,我们可以在方法中添加数据校验逻辑,保证数据的合法性,这就是封装的核心价值!
当我们用 private 修饰成员变量后,外部无法访问,此时必须提供对应的访问方法,这是封装的固定步骤,全网统一,没有例外 ✔️
private 关键字修饰所有的成员变量,私有化属性;public 修饰的方法:
set+ 变量名首字母大写get+ 变量名首字母大写setXxx 方法中,可以添加数据校验逻辑,保证数据的合法性;getXxx 方法中,直接返回成员变量的值即可。这是企业开发的标准写法,必须熟练掌握,能默写出来!
public class GirlFriend {
// 1. 私有化所有成员变量,封装属性
private String name;
private int age;
private String gender;
// 2. 为每个私有化的成员变量,提供对应的 get/set 方法
// name 的 set/get 方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
// age 的 set/get 方法 + 数据校验逻辑(核心)
public void setAge(int age) {
// 校验年龄是否合法:只允许 18~25 岁
if (age >= 18 && age <= 25) {
this.age = age;
} else {
System.out.println("年龄非法!请输入 18~25 之间的数字");
}
}
public int getAge() {
return age;
}
// gender 的 set/get 方法
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
// 成员方法:行为
public void sleep() {
System.out.println("女朋友在睡觉");
}
public void eat() {
System.out.println("女朋友在吃饭");
}
}
public class GirlFriendTest {
public static void main(String[] args) {
// 创建对象
GirlFriend gf = new GirlFriend();
// 调用 set 方法给属性赋值
gf.setName("小浔浔");
gf.setAge(18);
gf.setGender("女");
// 调用 get 方法获取属性的值并打印
System.out.println(gf.getName()); // 输出:小浔浔
System.out.println(gf.getAge()); // 输出:18
System.out.println(gf.getGender()); // 输出:女
// 调用成员方法
gf.eat(); // 输出:女朋友在吃饭
gf.sleep(); // 输出:女朋友在睡觉
// 测试非法数据:赋值年龄为 30
gf.setAge(30); // 输出:年龄非法!请输入 18~25 之间的数字
System.out.println(gf.getAge()); // 输出:0(默认值,未赋值成功)
}
}
✅ 运行结果:非法数据被拦截,数据安全性得到保障,这就是封装的魅力!
private 是权限修饰符,可修饰成员变量和成员方法;private 修饰的成员,仅本类可见,外部类无法直接访问;public 的 setXxx/getXxx 方法;setXxx 方法:负责给成员变量赋值,可加数据校验,无返回值,有参数;getXxx 方法:负责获取成员变量的值,有返回值,无参数;类名 对象名 = new 类名 ();;对象名。属性 赋值/取值,对象名。方法 () 调用行为;private 私有化成员变量 + public 的 get/set 方法;setXxx 赋值 + 校验,getXxx 取值,是封装的标准写法。本文是 Java 面向对象的开篇核心内容,也是最基础、最重要的部分。面向对象不是一门语法,而是一种编程思想,从面向过程到面向对象,是程序员思维的一次质的飞跃。
本节课的知识点,看似简单,但却是 Java 的根基:类与对象的关系、封装的思想、private 的使用,这些内容会贯穿你整个 Java 学习生涯,所有的框架、项目、高级特性,都是基于面向对象的思想设计的。
很多同学初学面向对象会觉得抽象、迷茫,这是正常的,不用焦虑。面向对象的思想,不是靠记,而是靠练:多写几个类,多创建几个对象,多体会封装的思想,慢慢的你就会发现,面向对象的代码比面向过程的代码更简洁、更优雅、更符合现实世界的逻辑。
希望本文能帮你夯实面向对象的基础,吃透核心思想。Java 学习之路,道阻且长,行则将至。愿你在面向对象的世界里,乘风破浪,稳步前行!💪

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online