Java 程序设计 第4章 继承 笔记

简介: Java 程序设计 第4章 继承 笔记

4.1 类的抽象和扩展

继承是从已有类派生出新的类,新的类称为子类,已有类称为父类或超类。

子类有父类的数据和行为。

继承是一种"is-a"关系。

Java只支持单继承,不支持多继承(避免了使用多继承时出现的复杂问题)。

Java中只有Object没有父类,其他每个类都有一个直接的父类。

如果一个类没有指定父类,则它的父类默认是Object。Object类定义了一些类公有的行为。

4.2 继承的定义

4.2.1 语法格式

继承的一般格式:

[类的修饰符]class 子类名 extends 父类名{

...

}

使用extends 父类名 表示要继承的父类。

4.2.2 构造器与实例化

子类和父类属于两个不同的语句块,属于两个不同的作用域。

子类可以访问父类的成员,

子类和父类的成员都由自己的构造器完成初始化。

子类进行初始化时,会调用父类的构造器,可以用super(参数列表)指定使用哪个父类的构造器。

对象 instanceof 类

判断左边对象是否是右边类的实例。

 

4.2.3 super的使用

super除了当成构造器来用之外,还可以作为作用域使用。

4.2.4 继承关系下的作用域(第3章已有,略)

4.3 方法的覆盖

1.多态 根据对象实际类型调用相应的方法

2.final修饰符修饰的方法不能被覆盖,final修饰的类(class)不能被继承。

3.使用@Override覆盖方法可以让编译器做语法检测

4.子类的override方法的修饰符能弱于父类的方法。

5.子类的override方法的异常列表中的异常类不能多于父类的异常列表中的异常类型。

 

4.4 类型转换

子类可以赋值给父类;父类可以通过强制类型转化赋值给子类,但前提是这个父类对象实际上是一个子类对象,否则在使用时会出错。

4.5 根父类:Object类

Java中所有的类都继承自Object类.

Object类为所有类提供了基本的属性和方法,是类的高度概括。

Object提供了一个缺省构造器和一组基本方法:

方法 作用
protected Object clone() 克隆
boolean equals(Object obj)  判断相等
protected void finalize() 析构
Class<?> getClass() 返回运行时类型
int hashCode() 返回对象的hash码
void notify() 唤醒当前对象监视的等待线程
void notifyAll() 唤醒当前对象
void wait() 让当前线程等待
void wait(long timeout) 让当前线程等待timeout毫秒
void wait(long timeout, int nanos) 让当前线程等待timeout毫秒+纳秒
String toString() 将对象转换成字符串,println打印对象时会自动调用。


相关文章
|
7天前
|
Java 开发者
Java 面向对象新视界:揭秘子类如何“继承”父类精华,再添“创新”之笔
【6月更文挑战第16天】在Java的面向对象世界,子类继承父类的特性,如`Circle`继承`Shape`,展示“is-a”关系。子类不仅保留父类的`color`和`display`方法,还添加了`radius`属性及定制的显示逻辑。这种继承与创新允许代码复用,增强灵活性和可扩展性,使得构建复杂系统变得更加高效和模块化。通过持续的继承与定制,开发者能构建出一系列独具特色的类,充分展现面向对象编程的力量。
|
4天前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
9 4
|
2天前
|
Java
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
|
4天前
|
Java 开发者
JAVA多线程初学者必看:为何选择继承Thread还是Runnable,这其中有何玄机?
【6月更文挑战第19天】在Java中创建线程,可选择继承Thread类或实现Runnable接口。继承Thread直接运行,但限制了多重继承;实现Runnable更灵活,允许多线程共享资源且利于代码组织。推荐实现Runnable接口,以保持类的继承灵活性和更好的资源管理。
|
4天前
|
Java 开发者
告别单线程时代!Java 多线程入门:选继承 Thread 还是 Runnable?
【6月更文挑战第19天】在Java中,面对多任务需求时,开发者可以选择继承`Thread`或实现`Runnable`接口来创建线程。`Thread`继承直接但限制了单继承,而`Runnable`接口提供多实现的灵活性和资源共享。多线程能提升CPU利用率,适用于并发处理和提高响应速度,如在网络服务器中并发处理请求,增强程序性能。不论是选择哪种方式,都是迈向高效编程的重要一步。
|
4天前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
8 2
|
5天前
|
Java 数据安全/隐私保护 开发者
Java是一种完全支持面向对象编程的语言,其面向对象特性包括封装、继承、多态和抽象等
【6月更文挑战第18天】**面向对象编程(OOP)通过对象封装状态和行为,实现问题域的抽象。Java全面支持OOP,核心特性包括**: - **封装**:保护数据安全,隐藏内部细节。 - **继承**:子类继承父类属性和行为,促进代码重用。 - **多态**:一个接口多种实现,增强灵活性和扩展性。 - **抽象**:通过接口和抽象类抽离共性,简化复杂性。 **Java的OOP便于理解和解决复杂系统问题。**
19 3
|
4天前
|
安全 Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础的封装、继承和多态是OOP的核心。封装通过访问控制(如private)隐藏类的内部细节,提供公共接口供外部交互。例如,`Person`类封装`name`和`age`,通过`getName()`和`setAge()`方法访问。继承允许子类(如`Dog`)继承父类(如`Animal`)的属性和方法,并可扩展或覆盖。多态使得父类引用可指向子类对象,调用方法时根据实际对象类型执行,如不同动物的`makeSound()`。接口实现多态提供了一种定义行为而不必关心实现的方式。向上转型(子类→父类)安全且默认,而向下转型(父类→子类)需类型检查以避免异常。
6 1
|
5天前
|
安全 Java 开发者
类与对象:Java中的封装、继承与多态
Java面向对象三大特性:封装(隐藏对象细节,增强安全与复用),继承(代码复用与扩展,如Dog继承Animal),多态(统一接口,不同实现,如Playable接口的Piano和Guitar)。通过示例展示了如何在实践中应用这些概念。【6月更文挑战第16天】
14 2
|
4天前
|
Java
揭秘!为何Java多线程中,继承Thread不如实现Runnable?
【6月更文挑战第19天】在Java多线程中,实现`Runnable`比继承`Thread`更佳,因Java单继承限制,`Runnable`可实现接口复用,便于线程池管理,并分离任务与线程,提高灵活性。当需要创建线程或考虑代码复用时,实现`Runnable`是更好的选择。