面向对象编程(基础):继承和内部类
需积分: 0 50 浏览量
更新于2024-07-27
收藏 503KB DOC 举报
面向对象02
在面向对象编程中,继承是第二大特征,其主要的核心目的是扩充已有类的功能。继承是通过在一个类(子类)中继承另一个类(父类)的所有成员变量和成员方法来实现的。
**继承的引出**
在上面的代码中,我们定义了两个类:Person和Student。按照之前所学习的概念来讲,代码编写如下:
```java
// Person.java
class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
// Student.java
class Student {
private String name;
private int age;
private String school;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSchool(String school) {
this.school = school;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public String getSchool() {
return this.school;
}
}
```
通过比较,现在已经可以发现,问题就在于Student类与Person类之间的重复太多,而且从实际的关系来讲学生就是一个人,但是学生与人范围相比,学生有更多的特征和行为。
**继承的基本概念**
继承是面向对象编程中的一种机制,允许在一个类中继承另一个类的所有成员变量和成员方法。继承的主要特点是:
1. 单继承:一个类只能继承一个父类。
2. 多态性:继承关系可以实现多态性,例如,一个父类可以有多个子类,每个子类可以有不同的实现。
3. 继承的优点:继承可以使代码重用,减少代码冗余,提高编程效率。
**继承的应用**
继承的应用非常广泛,例如:
1. 实现多态性:继承可以使得子类可以继承父类的成员变量和成员方法,从而实现多态性。
2. 代码重用:继承可以使得代码重用,减少代码冗余,提高编程效率。
3. 便于维护:继承可以使得代码维护变得更加方便。
**this和super关键字**
在继承关系中,this和super关键字非常重要。
* this关键字:this关键字用于访问当前类的成员变量和成员方法。
* super关键字:super关键字用于访问父类的成员变量和成员方法。
**final关键字**
final关键字用于修饰类、方法和变量,final关键字可以使得类、方法和变量不可被继承或修改。
**方法覆写**
方法覆写是指子类中重新定义父类中的方法,以便实现不同的行为。方法覆写可以使得子类可以继承父类的方法,但是可以根据需要进行修改。
继承是面向对象编程中的一种非常重要的机制,可以使得代码重用,减少代码冗余,提高编程效率。同时,this、super和final关键字在继承关系中也扮演着非常重要的角色。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-05-11 上传
2023-04-27 上传
2021-11-02 上传
zhugongzhao
- 粉丝: 0
- 资源: 7
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析