当前位置: 首页 > news >正文

《Java 100 天进阶之路》第12篇:Java对象、类、抽象类、构造方法

第12篇:Java对象、类、抽象类、构造方法

📌系列导航:《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第11篇:Java控制台输入输出语句|
➡️ 下一篇:第13篇:JDK和JRE、final与static、堆和栈

一、核心知识点

  • 类与对象的关系(蓝图 vs 实例)
  • 构造方法(构造函数)的作用、重载
  • 抽象类的定义与使用场景
  • this关键字:区分成员变量、调用其他构造方法
  • 封装与访问修饰符(privateprotectedpublic

二、通俗讲解(1分钟开心学)

1. 类与对象

  • :图纸。定义了一类事物共有的属性(变量)和行为(方法)。
  • 对象:根据图纸造出来的具体实物。每个对象的属性值可以不同。

生活类比
类就像一张“汽车设计图”,上面写着“有方向盘、四个轮子、能加速”。对象就是根据这张图纸造出来的一辆辆汽车,每辆车的颜色、车牌号可以不同。

2. 构造方法(构造函数)

构造方法是创建对象时自动调用的特殊方法,用来初始化对象的状态(给属性赋值)。

特点:

  • 方法名与类名完全相同
  • 没有返回值类型(连void都不写)
  • 如果没有手动定义构造方法,编译器会自动生成一个无参构造
  • 可以重载(多个构造方法,参数不同)

3. this关键字

  • 区分成员变量和局部变量(当名称冲突时)
  • 调用本类的其他构造方法:this(参数)— 必须写在构造方法的第一行

4. 抽象类

  • abstract修饰的类叫抽象类
  • 可以包含抽象方法(只有方法签名,没有方法体,用abstract修饰)
  • 不能直接new实例化,必须被子类继承后,由子类实现所有抽象方法才能实例化
  • 也可以包含普通方法和属性
  • 作用:定义模板,让子类填充具体实现

生活类比
抽象类就像一张“水果沙拉食谱”,它描述了“需要切水果、加酸奶、搅拌”这些步骤,但“切什么水果、放多少酸奶”这些具体内容留给你自己决定。你不能直接吃“食谱”,必须照着它做出一份具体的沙拉。

三、实操代码案例 + 场景说明

场景:开发一个图形计算程序,需要表示圆形和矩形,它们都有“计算面积”的行为,但计算方式不同。

1. 类与构造方法示例

publicclassPerson{privateStringname;privateintage;// 无参构造publicPerson(){this("匿名",0);// 调用另一个构造方法}// 有参构造(重载)publicPerson(Stringname,intage){this.name=name;setAge(age);// 使用setter做校验}publicvoidsetAge(intage){if(age>=0&&age<=150){this.age=age;}else{thrownewIllegalArgumentException("年龄非法");}}publicvoidintroduce(){System.out.println("我是"+name+","+age+"岁");}}// 使用Personp1=newPerson("张三",25);Personp2=newPerson();// 使用无参构造,name="匿名", age=0

2. 抽象类示例

// 抽象类abstractclassShape{protectedStringcolor;publicShape(Stringcolor){this.color=color;}// 抽象方法:只有声明,没有实现publicabstractdoublearea();// 普通方法:子类可以直接继承使用publicvoidshowColor(){System.out.println("颜色:"+color);}}// 子类实现classCircleextendsShape{privatedoubleradius;publicCircle(Stringcolor,doubleradius){super(color);this.radius=radius;}@Overridepublicdoublearea(){returnMath.PI*radius*radius;}}// 使用Circlec=newCircle("红色",5.0);c.showColor();// 普通方法System.out.println("面积:"+c.area());// 抽象方法已实现

四、避坑要点

错误/误区后果正确做法
定义了有参构造,忘写无参构造子类或某些框架(如Spring)报错显式写出无参构造或使用@NoArgsConstructor
抽象类的子类没有实现所有抽象方法编译错误要么实现所有抽象方法,要么子类也声明为abstract
构造方法中调用可被子类重写的方法子类未完全初始化,可能空指针构造方法中只调用privatefinal方法
this()super()同时出现在一个构造方法中编译错误只能选其一,且必须在第一行

五、面试高频考点

Q1:构造方法能不能被继承?能不能被重写?

不能被继承,也不能被重写,但可以被重载。

Q2:抽象类能不能有构造方法?有什么用?

可以有。用于初始化抽象类的成员变量,被子类构造方法通过super()调用。

Q3:this关键字的三种用法?

  1. 区分成员变量和局部变量(this.name = name
  2. 调用本类的其他构造方法(this(参数)
  3. 返回当前对象(return this

六、练习题

  1. 设计:定义一个Book类,包含书名、作者、价格,提供至少两个构造方法,并实现printInfo()
  2. 抽象类:定义一个抽象类Vehicle,包含抽象方法run(),创建CarBike子类实现。
  3. 代码分析new Person().introduce();如果Person只有带参构造会怎样?如何修复?

📊 你的学习进度

  • 当前:第12篇 / 共44篇 ·第二阶段:核心语法与面向对象(第5~20篇)
  • ✅ 已完成:第1~11篇
  • 📖 正在学:第12篇
  • ⏳ 待学习:第13~44篇

👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇

💡 本专栏每篇都包含:避坑表 + 面试高频考点 + 练习题。每天30分钟,100天拿offer!


👉 下一篇预告

《JDK和JRE、final与static、堆和栈》

内容简介:JDK⊃JRE⊃JVM三者关系,static变量/方法/代码块详解,堆与栈内存区别。

💡 学完这篇,你将彻底理解Java程序的运行环境和内存模型,面试必考内容一次搞定。

📌《Java 100 天进阶之路 | 从入门到上岗就业》每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!

http://www.cnnetsun.cn/news/2549600.html

相关文章:

  • 机器学习数据集详解,公开免费数据集获取渠道汇总
  • 从零构建通用关系数据库系统:总体设计方案
  • 2026电工杯数学建模竞赛A题论文、代码、数据(改进)
  • 2026保姆级免费去图片水印教程,这4款微信小程序一键搞定
  • VMware虚拟机里装FydeOS,给旧电脑或MacBook找个轻量‘副系统’
  • Unity新手村:用Terrain工具5分钟搭出你的第一个3D场景(含环境包导入)
  • 从HaGRID到自定义:手部关键点数据集标注、转换与可视化实战(Python代码)
  • 别再乱改lightdm.conf了!深入理解LightDM钩子脚本,精准控制Arctica-greeter显示缩放
  • Unity UI Toolkit避坑指南:3D世界UI、动画与Shader,这些事它真做不了
  • 告别虚拟机!手把手教你用U盘给新电脑装Win11+统信UOS双系统(保姆级分区教程)
  • GCN vs MLP:在Cora数据集上,图神经网络到底强在哪?(附可视化对比)
  • 极验4滑块验证码纯算实现:WASM逆向与AES-HMAC算法复现
  • Prompt设计黄金公式首次公开,从“为什么鸡过马路”到“量子态薛定谔猫谜题”,10分钟定制专属脑力挑战库,限前500名领取模板包
  • 电脑关机关不掉?可能是‘快速启动’在捣鬼!保姆级禁用教程与原理浅析
  • K6云原生性能测试:JavaScript脚本+Go运行时的现代压测实践
  • ChatGPT企业版与Microsoft 365 Copilot、Gemini for Workspace横向测评(2024Q2真实POC数据)
  • pion/webrtc v4.2.13:SCTP统计信息曝光、DataChannel并发与关闭竞态修复、测试稳定性提升、依赖升级一次看懂
  • 从GEO数据到小鼠模型:手把手复现一篇7分+动脉粥样硬化多组学文章的分析流程
  • AI Agent的场景选择框架:从高价值到高可行性的评估矩阵
  • 无头服务器玩转CARLA仿真:Ubuntu 20.04离线/无显示器模式下的服务端部署与客户端连接实战
  • QM/MM与ML/MM模拟对比:从呋喃光化学弛豫看机器学习力场结构保真度
  • 工业级大模型学习之路024:LangChain零基础入门教程(第七篇):RAG 系统评估、全链路调优
  • Sysinternals Autoruns深度指南:不止于查毒,更是Windows系统管理的瑞士军刀
  • 17.通杀安卓 /iOS 全机型!Linux 原生刷机方案,EDL 底层救砖 + 自动化源码开源
  • 【万字文档+源码】基于SpringBoot+Vue高校实验室预约系统-计算机专业项目设计分享
  • 棋牌类网站渗透测试五大高危漏洞实战解析
  • tsMuxer终极指南:一键实现蓝光视频无损封装转换
  • ARM SME指令集:非临时加载与查找表优化详解
  • 一键生成AI影视解说,这个开源工具让我每周多产出10倍内容
  • Ubuntu 20.04 ROS新手避坑:catkin_make报‘empy’错误的完整解决流程