课时58:继承问题引出

简介: 今天我将围绕 Java 中继承问题展开,主要分为以下三部分。1. 继承概念简述2. 传统编程的弊端3. 继承的必要性

课时58:继承问题引出


摘要:今天我将围绕 Java 中继承问题展开,主要分为以下三部分。

1. 继承概念简述

2. 传统编程的弊端

3. 继承的必要性

 

01. 继承概念简述

 

Java的面向对象编程里,继承性是一个重要特性,也是面向对象的第二大特性。那继承到底是什么呢?继承的主要特点是能够在已有类的功能基础上进行扩充,这就是继承的基本概念。接下来,我们先来探讨继承问题是怎么引出的,也就是为什么会需要继承。


一段好的代码,应该结构合理、易于维护,同时可重用性也要高。但要是只按照之前学的概念来定义程序,就难免会出问题。

 

02. 传统编程的弊端

 

我们来定义“人”类和“学生”类。先看“人”类,按照传统方式定义,代码如下:

class Person {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

再看“学生”类,除了姓名和年龄,还得有学校信息,代码是这样:

class Student {
    private String name;
    private int age;
    private String school;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
}

image.png

对比这两段代码,不难发现有很多重复的地方。从“人”和“学生”的关系来说,人是一个更宽泛的概念,学生属于人的范畴,但更具体。


比如说,要是我让同学找个学生当秘书,肯定不会找来一位 80岁的老人;但要是只说找个秘书,那就可能找到各种人。

 

03. 继承的必要性

 

这就说明,学生包含了人的所有基本特点,同时还有自己特有的属性。这也表明,传统开发模式下的类结构代码很难实现高效重用。想要实现代码重用,就得引入继承的概念。


继承的本质,就是在已有类的基础上拓展功能,而不是完全重新定义。这就是不使用继承时,程序开发中会出现的问题。感谢大家的观看!

相关文章
|
安全 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 磁盘分区工具 fdisk命令使用教程
【Shell 命令集合 磁盘管理 】Linux 磁盘分区工具 fdisk命令使用教程
485 0
|
9月前
|
Java
课时65:final关键字
我今天分享的是 Java 中 Final 关键字的相关知识。主要分为以下三个部分。 1. Final锁死继承路 2. Final封印复写门 3. Final打造常量库
101 1
|
9月前
|
Java
课时67:案例分析二(管理人员与职员)
今天我分享的是关于 Java 编程中管理人员与职员的案例分析,用于巩固继承概念。主要分为以下三部分。 1. 案例需求说明 2. 代码实现过程 3. 测试纠错与总结
|
11月前
|
JSON 数据挖掘 API
京东app商品详情API接口系列(京东 API)
本文介绍了使用 Python 调用京东商品详情 API 的方法。前期需安装 `requests` 库处理 HTTP 请求,导入 `json` 库解析 JSON 数据。接口通过商品 ID 获取详细信息,如价格、图片、评价等。示例代码展示了如何构建请求并处理响应数据。应用场景包括电商开发、市场调研和数据分析等,帮助提升用户体验、优化推荐系统及制定市场策略。
|
存储 关系型数据库 块存储
Ceph Reef(18.2.X)集群的状态管理实战
这篇文章是关于Ceph Reef(18.2.X)集群的状态管理实战,包括如何检查集群状态、OSD状态、MON监视器映射、PG和OSD存储对应关系,以及如何通过套接字管理集群和修改集群配置的详细指南。
393 4
|
11月前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
565 2
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
10月前
|
机器学习/深度学习 自然语言处理 算法
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
2645 1
|
10月前
|
存储 人工智能 自然语言处理
数势科技指标平台, 让数据产生最大价值
数势科技指标平台, 让数据产生最大价值
|
NoSQL 数据库 Redis
分布式锁的实现方案有哪些
分布式锁用于协调跨多个节点的任务执行。基于数据库的分布式锁利用唯一性约束或悲观锁确保锁的唯一性;Redis 实现则依赖 SETNX 指令或 redisson 客户端,通过原子操作保证互斥性;ZooKeeper 通过临时顺序节点与 Watch 机制,实现锁的竞争、释放及获取。
208 4
【通信协议讲解】单片机基础重点通信协议解析与总结之IIC(一)
【通信协议讲解】单片机基础重点通信协议解析与总结之IIC(一)
194 1

热门文章

最新文章