- 0
- 0
- 约5.33千字
- 约 14页
- 2026-01-21 发布于江苏
- 举报
Java的面向对象编程(封装、继承、多态)示例
引言
面向对象编程(Object-OrientedProgramming,OOP)是Java语言的核心思想,它通过将现实世界中的事物抽象为对象,以更贴近人类思维的方式组织代码。在面向对象的四大特性(封装、继承、多态、抽象)中,封装、继承、多态被称为“三大支柱”,它们共同支撑起了Java程序的可维护性、可扩展性和可复用性。本文将围绕这三大特性,结合具体示例展开详细讲解,帮助读者理解其核心概念与实际应用场景。
一、封装:对象的“保护壳”
封装是面向对象编程的基础,其核心思想是“隐藏内部实现,暴露必要接口”。简单来说,就是将对象的属性和实现细节封装在类的内部,仅通过公共方法与外部交互。这种设计就像给对象穿上一层“保护壳”,既避免了外部代码的非法修改,又降低了类与类之间的耦合度。
(一)封装的实现方式
在Java中,封装主要通过访问修饰符(public、private、protected、默认)和方法(getter/setter)实现。其中,private修饰符是封装的关键——它将属性限制为仅在类内部可见,外部代码无法直接访问或修改;而public修饰的getter(获取属性值)和setter(设置属性值)方法则作为“窗口”,允许外部以可控的方式与属性交互。
例如,我们设计一个“学生”类(Student),其中包含“姓名”和“年龄”两个属性。如果直接将属性设为public,外部代码可能随意修改年龄为负数,导致数据错误;而通过封装,我们可以在setter方法中添加校验逻辑,确保年龄的合法性。
(二)封装示例:学生类的设计
以下是一个典型的封装实现示例:
java
//学生类
publicclassStudent{
//私有属性,外部无法直接访问
privateStringname;
privateintage;
//构造方法,初始化属性
publicStudent(Stringname,intage){
this.name=name;
//调用setter方法进行参数校验,避免重复代码
setAge(age);
}
//getter方法:获取姓名
publicStringgetName(){
returnname;
}
//setter方法:设置姓名(无特殊校验,直接赋值)
publicvoidsetName(Stringname){
this.name=name;
}
//getter方法:获取年龄
publicintgetAge(){
returnage;
}
//setter方法:设置年龄(添加校验逻辑)
publicvoidsetAge(intage){
if(age0||age150){
thrownewIllegalArgumentException(“年龄必须在0到150之间”);
}
this.age=age;
}
//公共方法:输出学生信息
publicvoidshowInfo(){
System.out.println(“姓名:”+name+“,年龄:”+age);
}
}
在这个示例中,name和age被声明为private,外部代码只能通过getName()、setName()、getAge()、setAge()方法访问。特别是setAge()方法中添加了年龄校验逻辑,当传入非法值(如-5或200)时,会抛出异常并提示错误,确保了数据的有效性。这种设计使得Student类的内部状态被严格保护,外部代码无需关心属性的存储方式,只需通过规定的接口操作即可。
(三)封装的意义
封装的意义不仅在于数据保护,更在于“隔离变化”。例如,若未来需要将“年龄”的存储方式从int改为LocalDate(通过出生日期计算年龄),只需修改Student类内部的age属性和对应的getter/setter方法,外部代码调用getAge()时仍能获得正确结果,无需做任何修改。这种“接口不变,实现可变”的特性,大大提高了代码的可维护性。
二、继承:代码的“复用与扩展”
如果说封装是面向对象的“基础单元”,那么继承就是面向对象的“扩展工具”。它允许我们基于已有的类(父类/超类)创建新的类(子类/派生类),子类可以继承父类的属性和方法,同时添加自己的独特功能。这种机制避免了重复代码的编写,符合“代码复用”的设计原则。
(一)继承的基本语法
在Java中,继承通过extends关键字实现,语法格式为:class子类名extends父类名。需要注意的是,Java仅支持单继承(一个子类只能继承一个父类),但支持多层继承(子类可以再被其他类继承,形成继承链)。
例如,我们可
您可能关注的文档
- 2025年医药研发注册师考试题库(附答案和详细解析)(1230).docx
- 2025年注册压力容器工程师考试题库(附答案和详细解析)(1221).docx
- 2025年注册矿业工程师考试题库(附答案和详细解析)(1223).docx
- 2025年清洁能源分析师考试题库(附答案和详细解析)(1227).docx
- 2025年证券从业资格考试考试题库(附答案和详细解析)(1221).docx
- 2025年银行从业资格考试考试题库(附答案和详细解析)(1228).docx
- 2026年区块链架构师考试题库(附答案和详细解析)(0108).docx
- 2026年智慧城市设计师考试题库(附答案和详细解析)(0104).docx
- 2026年期货从业资格考试考试题库(附答案和详细解析)(0102).docx
- 2026年注册家族财富管理师(CFWM)考试题库(附答案和详细解析)(0104).docx
- 三年级下册语文1-8单元默写通关训练(含答案)(2).docx
- 2026年及未来5年市场数据中国金属钒市场发展规划及投资战略可行性预测报告.docx
- 2026年及未来5年市场数据中国金属工艺品行业全景调研及投资可行性报告.docx
- 2026年及未来5年市场数据中国金属家具市场分析及投资战略研究预测可行性报告.docx
- 2026年及未来5年市场数据中国金属膜电阻器行业市场需求预测与投资战略规划分析报告.docx
- 2026年及未来5年市场数据中国金银花行业市场发展战略分析及投资前景专项预测报告.docx
- 2026年及未来5年市场数据中国金银花行业市场研究及投资战略预测报告.docx
- 2026年及未来5年市场数据中国抗氧化剂市场专项调查分析及投资前景预测报告.docx
- 2026年及未来5年市场数据中国救护车市场运行格局及投资战略研究报告.docx
- 2026年及未来5年市场数据中国精细化工行业发展前景预测及投资分析报告.docx
原创力文档

文档评论(0)