Java OOP入门:继承、抽象类与对象特性解析
需积分: 0 153 浏览量
更新于2024-08-26
收藏 16KB MD 举报
"Java面向对象编程的第二天课程,主要讲解了继承的概念、特点、好处以及基本语法。讨论了父类和子类的关系,强调子类可以从父类继承非私有的属性和行为,提高了代码的复用性和实现多态的基础。还提到了构造方法和`super`、`this`的关键字用法。"
在Java编程中,面向对象的一个核心特性是继承(Inheritance)。继承允许我们创建一个新类(子类),这个新类能够直接使用已存在的类(父类)的属性和方法,而无需再次编写相同的代码。这样不仅避免了代码重复,也使得类之间的关系更加清晰,符合"开闭原则",即对扩展开放,对修改关闭。
### 继承的概述
继承描述的是类之间的层次结构,一个类(子类)可以继承另一个类(父类)的属性和方法。在Java中,使用`extends`关键字来表示继承关系。例如,`class ChildClass extends ParentClass {}` 表示`ChildClass`是`ParentClass`的子类。
### 继承的特点
1. **子类自动拥有父类非私有的成员**:子类实例化后,可以获得父类中非私有(public或protected)的属性和方法。
2. **子类也可以拥有自己的成员**:除了继承父类的特性外,子类还可以定义自己的属性和方法,以满足特定需求。
### 继承的好处
1. **代码的复用性**:通过继承,子类可以直接使用父类的功能,减少了重复代码,提高了代码的利用率。
2. **多态的前提**:继承使得类与类之间产生了层次关系,为多态提供了基础。多态是指同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
### 构造方法与`super`、`this`的用法
- **构造方法**:每个类都有构造方法,用于初始化新创建的对象。子类可以有自己特定的构造方法,同时也可以调用父类的构造方法。在子类构造方法中,通过`super`关键字调用父类的构造方法,确保父类的初始化逻辑得以执行。
- **`super`关键字**:`super`用于访问和调用父类的成员,包括属性和方法。在子类中,如果某个成员与父类的成员同名,使用`super`可以明确指定调用父类的成员。
- **`this`关键字**:`this`关键字代表当前对象,用于访问和调用本类的成员。在方法或构造方法中,`this`用来区分同名的局部变量和成员变量,或调用本类的其他构造方法。
### 示例代码
```java
class Employee {
String name; // 定义name属性
public void work() {
System.out.println("尽心尽力地工作");
}
}
class Teacher extends Employee {
public void printName() {
System.out.println("name=" + name);
}
}
public class ExtendDemo01 {
public static void main(String[] args) {
Teacher teacher = new Teacher(); // 创建一个讲师类对象
teacher.work(); // 调用父类的方法
teacher.printName(); // 调用子类的方法
}
}
```
在这个例子中,`Teacher`类继承了`Employee`类,并且可以使用`Employee`的`work`方法,同时`Teacher`类还可以定义自己的`printName`方法。在`main`方法中,我们创建了一个`Teacher`对象,可以调用`Employee`类的方法和`Teacher`类的方法。
Java的继承机制是实现代码复用、构建复杂系统的重要工具。通过继承,我们可以构建出层次分明、结构合理的类体系,更好地模拟现实世界中的各种对象关系。
2021-10-15 上传
2021-12-06 上传
2019-09-09 上传
2024-01-15 上传
2022-11-15 上传
2023-07-29 上传
小白成长记198
- 粉丝: 1
- 资源: 9
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析