课时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; } }
对比这两段代码,不难发现有很多重复的地方。从“人”和“学生”的关系来说,人是一个更宽泛的概念,学生属于人的范畴,但更具体。
比如说,要是我让同学找个学生当秘书,肯定不会找来一位 80岁的老人;但要是只说找个秘书,那就可能找到各种人。
03. 继承的必要性
这就说明,学生包含了人的所有基本特点,同时还有自己特有的属性。这也表明,传统开发模式下的类结构代码很难实现高效重用。想要实现代码重用,就得引入继承的概念。
继承的本质,就是在已有类的基础上拓展功能,而不是完全重新定义。这就是不使用继承时,程序开发中会出现的问题。感谢大家的观看!