Java面向对象入门:类、对象与封装详解
Java面向对象入门:类、对象与封装详解 知识回顾 在学习面向对象之前,我们编写的Java代码多采用**面向过程**的编程思想:核心是「步骤」,将任务拆解为第一步、第二步等,所有代码通常集中在 main 方法中,逻辑耦合度高且复用性差。 从本节开始,我们将进入Java的核心——**面向对象(OOP)** 编程。它是Java的灵魂与企业开发的主流思想,核心是「对象」。万物皆对象,掌握用对象的思维编写…

Java面向对象入门:类、对象与封装详解 知识回顾 在学习面向对象之前,我们编写的Java代码多采用**面向过程**的编程思想:核心是「步骤」,将任务拆解为第一步、第二步等,所有代码通常集中在 main 方法中,逻辑耦合度高且复用性差。 从本节开始,我们将进入Java的核心——**面向对象(OOP)** 编程。它是Java的灵魂与企业开发的主流思想,核心是「对象」。万物皆对象,掌握用对象的思维编写…

在学习面向对象之前,我们编写的Java代码多采用面向过程的编程思想:核心是「步骤」,将任务拆解为第一步、第二步等,所有代码通常集中在 main 方法中,逻辑耦合度高且复用性差。
从本节开始,我们将进入Java的核心——面向对象(OOP) 编程。它是Java的灵魂与企业开发的主流思想,核心是「对象」。万物皆对象,掌握用对象的思维编写代码是Java进阶的必经之路。
在生活中,我们通常是寻找「具备特定功能的事物」来完成对应任务,而非亲自一步步实现:
核心总结:
面向对象的学习分为两个循序渐进的阶段:
Scanner、Random 等)。这是面向对象最基础的概念:
Phone 类是设计图,根据它创建的「小米手机」、「荣耀手机」就是具体的对象。在Java中,必须先设计类,才能创建并使用对象。没有类(设计图),就无法实例化对象(成品)。
public class 类名 {
// 1. 成员变量(属性):类中方法外,描述事物特征
数据类型 变量名;
// 2. 成员方法(行为):描述事物功能,通常不加 static
public void 方法名() {
// 方法体
}
}
命名规范:
Phone、Student。brand、price。call()、playGame()。类名 对象名 = new 类名();
// 示例:Phone p = new Phone();
// 左侧:声明一个 Phone 类型的引用变量 p
// 右侧:在堆内存中开辟空间,创建 Phone 对象
// =:将对象的内存地址赋值给变量 p
创建对象后,可通过 . 运算符操作其属性与行为:
对象名.成员变量名(如 p.brand = "小米";)对象名.成员方法名(参数)(如 p.call();)JavaBean类 - Phone.java
public class Phone {
// 成员变量:属性
String brand;
double price;
// 成员方法:行为
public void call() {
System.out.println("手机在打电话");
}
public void playGame() {
System.out.println("手机在玩游戏");
}
}
测试类 - PhoneTest.java
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); // 输出:荣耀
p2.call(); // 输出:手机在打电话
}
}
注:每个对象在内存中独立存在,修改一个对象的属性不会影响其他对象。
main 方法。main 方法,负责创建对象、赋值、调用方法及执行测试逻辑。.java 源文件中可定义多个 class,但只能有一个类被 public 修饰。public 修饰的类,类名必须与文件名完全一致(区分大小写)。0 | 小数:0.0 | 布尔:false | 字符:\u0000 | 引用类型:null从需求中提取:
封装是面向对象三大特征(封装、继承、多态)之首。
对象代表什么,就封装对应的数据,并提供该数据对应的行为。 即:谁的属性归谁管,谁的行为归谁做,职责分明。
private 关键字private 是Java中最常用的权限修饰符,是实现封装的核心手段。
对象.属性 随意赋值(如设置年龄为负数),导致数据不安全。使用 private 后,必须通过指定方法访问,从而可在方法中加入数据校验逻辑。private 修饰所有成员变量,实现属性私有化。public 方法:
setXxx(参数):用于赋值,方法名为 set + 变量名首字母大写。getXxx():用于取值,方法名为 get + 变量名首字母大写。setXxx 方法中添加数据校验逻辑,确保数据合法性。getXxx 方法中直接返回成员变量值。JavaBean类 - GirlFriend.java
public class GirlFriend {
// 1. 私有化成员变量
private String name;
private int age;
private String gender;
// 2. 提供 get/set 方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
// 添加数据校验
if (age >= 18 && age <= 25) {
this.age = age;
} else {
System.out.println("年龄非法!请输入18~25之间的数字");
}
}
public int getAge() {
return age;
}
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("女朋友在吃饭");
}
}
测试类 - GirlFriendTest.java
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();
// 测试非法数据拦截
gf.setAge(30); // 输出:年龄非法!请输入18~25之间的数字
System.out.println(gf.getAge()); // 输出:0(默认值,赋值未成功)
}
}
private 修饰的成员仅本类可见。public 的 get/set 方法。setXxx 负责赋值与校验(无返回值,有参数);getXxx 负责取值(有返回值,无参数)。对象名.属性 和 对象名.方法() 进行操作。private 隐藏内部数据,通过 public get/set 提供安全访问。是保障数据安全与代码健壮性的基石。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online