Java的面向对象编程(封装、继承、多态)示例.docxVIP

  • 0
  • 0
  • 约5.33千字
  • 约 14页
  • 2026-01-21 发布于江苏
  • 举报

Java的面向对象编程(封装、继承、多态)示例.docx

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仅支持单继承(一个子类只能继承一个父类),但支持多层继承(子类可以再被其他类继承,形成继承链)。

例如,我们可

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档