Java基础——类和对象
学习目标学会定义符合规范的 Java 类掌握类的实例化创建对象方法掌握通过对象引用访问对象属性 / 方法的规则理解 this 引用的含义和使用场景理解构造方法的作用、特性及重载掌握静态 / 非静态成员方法 / 变量的调用规则理解代码块的分类、作用及执行顺序一、先搞懂面向过程 vs 面向对象1. 核心区别面向过程关注 “做事的步骤”一步一步按流程来。面向对象关注 “参与的角色对象”让对象之间协作完成事情。2. 举个栗子洗衣服面向过程接水 → 2. 放洗衣粉 → 3. 放衣服 → 4. 搓洗 → 5. 漂洗 → 6. 拧干 → 7. 晾晒全程盯着 “步骤”少一步都不行面向对象角色对象人、衣服、洗衣粉、洗衣机。分工人把衣服和洗衣粉放进洗衣机 → 洗衣机完成清洗 → 人把衣服拿出来晾晒。全程盯着 “谁来做”不用关心洗衣机内部怎么转3. 面向对象核心三步找对象确定参与的角色→ 创建对象给角色赋予属性→ 使用对象让角色做事二、类对象的 “说明书”1. 认识类类是描述对象 “长什么样、能做什么” 的模板比如“学生类”描述学生有姓名、年龄属性能学习、考试行为“洗衣机类”描述洗衣机有容量、品牌属性能洗衣服、脱水行为。类比类 月饼模子对象 用模子压出来的月饼同一个模子能做多个月饼。2. 定义类新手必看规则核心规则类名用大驼峰每个单词首字母大写如Student、WashingMachine成员属性 / 方法前统一写public暂时记表示 “公开可访问”方法不加static暂时记加了就是 “类专属”没加是 “对象专属”。实战定义学生类// 学生类模板 public class Student { // 成员变量属性描述对象的特征 public String name; // 姓名 public int age; // 年龄 public double score;// 成绩 // 成员方法行为描述对象能做的事 public void study() { System.out.println(name 正在学习); } public void exam() { System.out.println(name 参加考试成绩 score); } }3. 类的实例化用模板造对象“实例化” 就是用类创建具体对象好比用月饼模子做出月饼。语法 示例public class Test { public static void main(String[] args) { // 1. new关键字创建对象实例化 Student stu1 new Student(); // 2. . 符号访问对象的属性/方法 stu1.name 张三; stu1.age 18; stu1.score 90.5; stu1.study(); // 输出张三正在学习 stu1.exam(); // 输出张三参加考试成绩90.5 // 3. 同一个类可以创建多个对象 Student stu2 new Student(); stu2.name 李四; stu2.age 19; stu2.study(); // 输出李四正在学习 } }三、前置知识三种变量类型定义位置访问方式示例局部变量方法内部直接用int num 10;成员变量类中、方法外对象。变量名stu1.name 张三静态变量类中、方法外加 static类名。变量名推荐Student.school 北大完整代码示例// 演示三种变量的区别 public class VariableDemo { // 1. 静态变量类变量类中、方法外加static // 特点属于类所有对象共享生命周期随类 public static String school 北京大学; // 2. 成员变量实例变量类中、方法外无static // 特点属于对象每个对象独有创建对象时初始化 public String name; // 成员方法演示三种变量的访问方式 public void showInfo(int age) { // 3. 局部变量方法内部包括方法参数 // 特点仅方法内可用必须手动初始化 int score 95; // 访问变量 // ① 访问局部变量直接用变量名 System.out.println(局部变量 age age); System.out.println(局部变量 score score); // ② 访问成员变量this.变量名或 对象.变量名 // this代表当前对象这里就是调用showInfo的对象 System.out.println(成员变量 name this.name); // ③ 访问静态变量类名.变量名推荐 或 this.变量名不推荐 System.out.println(静态变量 school VariableDemo.school); } // 主方法测试入口 public static void main(String[] args) { // 测试成员变量 // 创建第一个对象 VariableDemo stu1 new VariableDemo(); stu1.name 张三; // 成员变量每个对象单独赋值 stu1.showInfo(18); // 传入局部变量age18 // 创建第二个对象 VariableDemo stu2 new VariableDemo(); stu2.name 李四; // 成员变量和stu1的name互不影响 stu2.showInfo(19); // 传入局部变量age19 // 测试静态变量 // 静态变量通过类名修改所有对象都会受影响 VariableDemo.school 清华大学; System.out.println(\n修改静态变量后); stu1.showInfo(18); // 此时stu1的school也变成了清华大学 stu2.showInfo(19); // 局部变量注意事项 // 错误示例局部变量未初始化不能用注释掉才能运行 // int num; // System.out.println(num); // 编译报错变量num可能尚未初始化 } }运行结果局部变量 age 18 局部变量 score 95 成员变量 name 张三 静态变量 school 北京大学 局部变量 age 19 局部变量 score 95 成员变量 name 李四 静态变量 school 北京大学 修改静态变量后 局部变量 age 18 局部变量 score 95 成员变量 name 张三 静态变量 school 清华大学 局部变量 age 19 局部变量 score 95 成员变量 name 李四 静态变量 school 清华大学核心区别解读维度局部变量成员变量静态变量定义位置方法内部含参数类中、方法外无 static类中、方法外加 static所属对象仅属于当前方法属于具体对象每个对象独有属于类所有对象共享访问方式直接用变量名对象。变量名 /this. 变量名类名。变量名推荐初始化必须手动赋值才能用自动默认初始化0/null/false自动默认初始化也可静态代码块初始化生命周期方法执行时创建执行完销毁对象创建时创建对象销毁时销毁类加载时创建程序结束时销毁关键易错点总结局部变量方法里的临时变量用完就丢必须手动赋值比如age是方法参数调用时传值才初始化成员变量每个对象的“专属属性”比如张三和李四的name互不影响静态变量类的 “共享属性”修改一次所有对象都变比如school从北大改成清华后所有学生的学校都变了静态方法如main中不能直接访问成员变量因为成员变量属于对象静态方法不依赖对象但可以直接访问静态变量。四、this 引用对象的 “身份证”1. 为什么需要 this场景 1形参名和成员变量名重名分不清谁是谁// 不好的写法name到底是形参还是成员变量 public void setName(String name) { name name; // 错误把形参赋值给形参成员变量没变化 } // 正确写法this.name 成员变量name 形参 public void setName(String name) { this.name name; }场景 2多个对象调用同一个方法方法要知道 “服务谁”比如 stu1 和 stu2 都调用study()this 会自动指向调用方法的对象stu1 调用时 thisstu1stu2 调用时 thisstu2。2.this 的核心特性this 指向调用当前方法的对象只能在 “成员方法” 中用是成员方法的 “隐藏参数”编译器自动传递不用手动写。五、对象的构造与初始化1. 重载方法的 “同名不同参”好比去餐厅点餐“来份炒饭”无参、“来份加蛋的炒饭”一个参数、“来份加蛋加肠的炒饭”两个参数—— 都是 “炒饭”只是参数不同。// 重载示例方法名相同参数个数/类型不同 public class Student { public void eat() { System.out.println(吃饭); } public void eat(String food) { System.out.println(吃 food); } }2. 构造方法对象的 “出生证明”创建对象时自动调用给对象初始化属性一生只调用一次好比人只能出生一次。构造方法规则名字必须和类名完全一样没有返回值连 void 都不能写创建对象时编译器自动调用对象生命周期内只调一次可以重载多个构造方法参数不同不手动定义的话编译器自动生成无参构造方法构造方法中可通过this(...)调用其他构造方法必须是第一条语句绝大多数用 public 修饰特殊场景单例模式用 private。示例构造方法的使用public class Student { public String name; public int age; // 无参构造编译器自动生成写了就用自己的 public Student() { System.out.println(无参构造被调用); } // 有参构造重载 public Student(String name, int age) { this.name name; // 用this区分变量 this.age age; System.out.println(有参构造被调用); } } // 测试 public class Test { public static void main(String[] args) { Student stu1 new Student(); // 调用无参构造 Student stu2 new Student(张三, 18); // 调用有参构造 System.out.println(stu2.name); // 输出张三 } }3. 默认初始化为什么成员变量不用手动赋值局部变量是 “临时草稿纸”不用就丢所以必须手动赋值而成员变量是对象的 “专属特征”JVM 创建对象时会自动给成员变量赋默认值int0、Stringnull、booleanfalse好比买新手机出厂就自带默认设置。4. 就地初始化定义时直接赋值public class Student { public String name 未知姓名; // 就地初始化 public int age 18; // 就地初始化 }六、封装给对象 “套壳子”1. 封装的概念把对象的属性和方法 “打包”隐藏内部细节只对外暴露有限接口好比手机我们只用屏幕和按键不用关心内部电路板怎么工作。2. 访问限定符控制 “可见性”Java 用 4 种限定符控制谁能访问类 / 属性 / 方法限定符同类同包子类任意位置通俗理解private✔️❌❌❌私有的只有自己能看default✔️✔️❌❌默认的同包可见protected✔️✔️✔️❌受保护的子类也能看public✔️✔️✔️✔️公开的谁都能看3. 包类的 “文件夹”1. 包的作用管理类把相关的类放在同一个包好比把 “厨具” 放厨房、“衣服” 放衣柜避免重名不同包可以有同名类好比 “张三一班” 和 “张三二班” 不冲突。2. 常用操作导入包import java.util.Scanner;用别人写好的类自定义包IDEA 中右键 src → 新建 → 包 → 输入包名如com.example.student类文件最上方会自动生成package com.example.student;包名规则公司域名颠倒如百度域名www.baidu.com→ 包名com.baidu.xxx。七、static 成员类的 “共享资源”1. static 修饰成员变量静态变量属于类不是某个对象所有对象共享好比班级的 “班名”所有学生的班名都一样不用每个学生单独存。示例public class Student { public String name; // 成员变量每个学生都不一样 public static String school 北京大学; // 静态变量所有学生共享 public void show() { System.out.println(name 学校 school); } } // 测试 public class Test { public static void main(String[] args) { Student stu1 new Student(); stu1.name 张三; stu1.show(); // 输出张三学校北京大学 Student stu2 new Student(); stu2.name 李四; // 静态变量推荐用“类名.变量名”访问 Student.school 清华大学; stu2.show(); // 输出李四学校清华大学 stu1.show(); // 输出张三学校清华大学所有对象共享一个改全改 } }2. static 修饰成员方法静态方法属于类不用创建对象就能调用好比计算器的 “加法功能”不用先造一个计算器对象直接用。核心规则静态方法中不能直接用非静态成员变量 / 方法要用必须先 new 对象非静态方法中可以直接用静态成员推荐用 “类名。方法名” 调用如Math.random()。核心调用规则重点通过对象引用调用用于非静态成员变量 / 方法通过类名调用用于静态成员变量 / 方法推荐。静态方法中不能用任何非静态成员变量 / 方法要用必须 new 对象再通过对象访问非静态方法中可直接用静态成员变量 / 方法核心本质静态的不依赖于对象属于类不属于对象3. static 成员的初始化就地初始化public static int count 0;静态代码块专门初始化静态变量只执行一次类加载时执行。八、代码块初始化的 “补充手段”用{}包裹的代码按位置 / 修饰符分 3 类类型定义位置执行时机作用普通代码块方法内部调用方法时执行拆分复杂方法逻辑构造代码块类中无修饰符创建对象时执行早于构造方法初始化成员变量静态代码块类中加 static类加载时执行只执行一次初始化静态变量执行顺序静态代码块 → 构造代码块 → 构造方法public class Student { // 静态代码块 static { System.out.println(静态代码块执行); } // 构造代码块 { System.out.println(构造代码块执行); } // 构造方法 public Student() { System.out.println(构造方法执行); } } // 测试创建两个对象 public class Test { public static void main(String[] args) { Student stu1 new Student(); Student stu2 new Student(); } } // 输出 // 静态代码块执行只执行一次 // 构造代码块执行 // 构造方法执行 // 构造代码块执行 // 构造方法执行总结面向对象核心找对象→创对象→用对象类是模板对象是具体实例this 是对象的 “身份证”指向调用当前方法的对象解决变量重名和对象识别构造方法是对象 “出生凭证”一生只调一次可重载支持 this 调用其他构造封装是 “藏细节、露接口”靠访问限定符控制可见性包是类的 “文件夹”静态成员属于类、所有对象共享静态方法不能直接用非静态成员代码块执行顺序静态类加载→ 构造创对象→ 构造方法。

相关新闻

打卡信奥刷题(2932)用C++实现信奥题P5627 P5746 [NOI2002] 机器人M号

打卡信奥刷题(2932)用C++实现信奥题P5627 P5746 [NOI2002] 机器人M号

P5746 [NOI2002] 机器人M号 题目描述 3030 年,Macsy 正在火星部署一批机器人。 第 111 秒,他把机器人 111 号运到了火星,机器人 111 号可以制造其他的机器人。 第 222 秒,机器人 111 号造出了第一个机器人——机器人 222 号。 第 …

2026/7/5 22:55:00 阅读更多 →
告别“蜡像硅胶脸”:R3DS Wrap的次世代数字人微观孔隙与物理血流重构工作流

告别“蜡像硅胶脸”:R3DS Wrap的次世代数字人微观孔隙与物理血流重构工作流

在次世代游戏美术、影视级数字人与虚拟制片领域,“皮肤微观孔隙的动态形变”与“多层组织的次表面透射”,是公认的终极视觉深水区。无数 3D 艺术家以为只要把 Texturing XYZ 的高精度置换贴图怼到模型上,就能做出写实皮肤。结果一进渲染器&am…

2026/7/6 1:12:57 阅读更多 →
从零开始写Qwen3(二)快速搭建Qwen3

从零开始写Qwen3(二)快速搭建Qwen3

概述 在从零开始写Qwen3(一)模型结构分析中,已经识别了Qwen3的基本结构,了解了使用哪些关键组件,现在开始实现,将模型分为这几个模块: attn,注意力计算,不包含短接和QK…

2026/7/6 19:46:14 阅读更多 →

最新新闻

LV3296与STM32F722ZE嵌入式信号处理系统设计

LV3296与STM32F722ZE嵌入式信号处理系统设计

1. LV3296与STM32F722ZE的硬件协同架构解析在嵌入式信息处理系统中,LV3296作为一款高性能信号调理芯片,与STM32F722ZE微控制器的组合堪称黄金搭档。这套组合之所以能实现高效的信息捕获与跟踪,关键在于两者的硬件特性形成了完美互补。LV3296的…

2026/7/7 12:56:01 阅读更多 →
FFmpeg 6.1 视频帧提取实战:5种场景命令详解与性能对比

FFmpeg 6.1 视频帧提取实战:5种场景命令详解与性能对比

FFmpeg 6.1 视频帧提取实战:5种场景命令详解与性能对比 视频帧提取是计算机视觉、媒体处理等领域的基础操作,而FFmpeg作为开源多媒体处理工具的标杆,其功能强大但参数复杂的特性常常让使用者感到困惑。本文将深入解析FFmpeg 6.1在五种典型视频…

2026/7/7 12:56:01 阅读更多 →
传统产品经理转型AI产品,你需要掌握的5大核心能力与学习路径

传统产品经理转型AI产品,你需要掌握的5大核心能力与学习路径

本文针对传统产品经理转型AI产品经理的常见误区,指出“学会用ChatGPT”并不等同于懂AI产品。文章强调AI产品经理需要重建认知框架,并提出AI产品经理最重要的能力是接受不确定性。核心内容围绕AI技术基础、AI产品设计、数据驱动能力、AI商业思维以及跨团队…

2026/7/7 12:56:01 阅读更多 →
TC78H653FTG与MKV46F128VLH16的直流电机驱动方案

TC78H653FTG与MKV46F128VLH16的直流电机驱动方案

1. 直流有刷电机驱动系统概述在现代工业控制和消费电子领域,直流有刷电机因其结构简单、控制方便和成本低廉等优势,仍然是许多应用场景的首选驱动方案。然而,要充分发挥这类电机的性能潜力,需要精心设计的驱动电路和控制系统。TC7…

2026/7/7 12:51:39 阅读更多 →
Metasploitable2靶机实战:Kali Linux渗透测试与五大经典漏洞利用解析

Metasploitable2靶机实战:Kali Linux渗透测试与五大经典漏洞利用解析

1. 项目概述:从靶场到实战思维的桥梁如果你刚接触网络安全,面对Kali Linux和Metasploit这些名字,可能会觉得它们既神秘又强大,仿佛掌握了就能瞬间“黑”进任何系统。但现实是,没有经过系统训练的盲目尝试,就…

2026/7/7 12:51:39 阅读更多 →
浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南

浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南

浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南 【免费下载链接】svgedit Powerful SVG-Editor for your browser 项目地址: https://gitcode.com/gh_mirrors/svg/svgedit 还在为复杂的矢量图形软件而发愁吗?想找一个既免费又强大的S…

2026/7/7 12:47:38 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻