0

0

Java OOP如何通过继承减少代码重复

P粉602998670

P粉602998670

发布时间:2025-10-15 15:40:01

|

146人浏览过

|

来源于php中文网

原创

继承通过extends关键字实现,子类复用父类非私有成员,如Employee派生FullTimeEmployee和PartTimeEmployee共享name、id与work();抽象类Shape定义getArea()抽象方法,Circle和Rectangle分别实现,printInfo()被共用;子类可重写clockIn()以扩展行为,避免代码重复。

java oop如何通过继承减少代码重复

Java 面向对象编程(OOP)中的继承机制,是减少代码重复的核心手段之一。通过让子类继承父类的属性和方法,可以避免在多个类中反复编写相同的代码,提升代码的可维护性和可扩展性。

1. 继承的基本原理

在 Java 中,使用 extends 关键字实现继承。一个子类可以继承父类的非私有字段和方法,从而直接复用已有逻辑。

例如,多个员工类型(如全职、兼职)都有姓名、工号等共性信息和行为,可以将这些共性提取到一个父类中:

class Employee {
    protected String name;
    protected String id;
public void work() {
    System.out.println(name + " 正在工作");
}

}

立即学习Java免费学习笔记(深入)”;

Quillbot
Quillbot

一款AI写作润色工具,QuillBot的人工智能改写工具将提高你的写作能力。

下载

class FullTimeEmployee extends Employee { public void calculateSalary() { System.out.println("按月发放工资"); } }

class PartTimeEmployee extends Employee { public void calculateSalary() { System.out.println("按小时结算工资"); } }

这里,FullTimeEmployeePartTimeEmployee 都复用了 nameidwork() 方法,无需重新定义。

2. 抽象类集中通用逻辑

当多个类有共同行为但具体实现不同时,可以使用 抽象类 定义模板,把重复的结构统一管理。

比如所有图形都有面积计算方法,但公式不同:

abstract class Shape {
    public abstract double getArea();
public void printInfo() {
    System.out.println("这是一个图形,面积为:" + getArea());
}

}

立即学习Java免费学习笔记(深入)”;

class Circle extends Shape { private double radius;

public Circle(double radius) {
    this.radius = radius;
}

public double getArea() {
    return Math.PI * radius * radius;
}

}

立即学习Java免费学习笔记(深入)”;

class Rectangle extends Shape { private double width, height;

public Rectangle(double width, double height) {
    this.width = width;
    this.height = height;
}

public double getArea() {
    return width * height;
}

}

立即学习Java免费学习笔记(深入)”;

printInfo() 方法被所有子类共享,无需每个图形类都写一遍输出逻辑。

3. 方法重用与扩展

子类不仅可以继承方法,还能在需要时覆盖(override)方法,实现功能扩展而不破坏原有结构。

例如,在员工类中增加默认的打卡行为,个别类型可自定义:

class Employee {
    public void clockIn() {
        System.out.println("员工打卡上班");
    }
}

class RemoteEmployee extends Employee { @Override public void clockIn() { System.out.println("远程员工通过系统签到"); } }

这样既保留了通用实现,又允许特殊行为灵活调整,避免复制整个流程代码。

基本上就这些。通过合理设计继承关系,把公共部分上移到父类,Java OOP 能有效消除冗余,让代码更简洁清晰。关键在于识别共性,提炼出可复用的基类。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

52

2025.11.27

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

52

2025.11.27

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

52

2025.11.27

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

93

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

102

2025.10.23

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3万人学习

C# 教程
C# 教程

共94课时 | 7.9万人学习

Java 教程
Java 教程

共578课时 | 53.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号