From 064b924df372cb4e8576cfe107ebf19453e92a11 Mon Sep 17 00:00:00 2001 From: Silverados <295843706@qq.com> Date: Tue, 26 Mar 2019 13:23:43 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Java=20=E5=9F=BA=E7=A1=80.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重写还有一个抛出异常类型的限制。 --- docs/notes/Java 基础.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/notes/Java 基础.md b/docs/notes/Java 基础.md index 3068e439..0080aecc 100644 --- a/docs/notes/Java 基础.md +++ b/docs/notes/Java 基础.md @@ -668,12 +668,31 @@ SuperExtendExample.func() 存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法。 -为了满足里式替换原则,重写有有以下两个限制: +为了满足里式替换原则,重写有以下三个限制: - 子类方法的访问权限必须大于等于父类方法; - 子类方法的返回类型必须是父类方法返回类型或为其子类型。 +- 子类方法抛出的异常类型必须是父类抛出异常类型或为其子类型。 -使用 @Override 注解,可以让编译器帮忙检查是否满足上面的两个限制条件。 +使用 @Override 注解,可以让编译器帮忙检查是否满足上面的三个限制条件。例如: +```java +public class test { + class father{ + protected List say() throws Throwable{ + System.out.println("father"); + return new ArrayList<>(); + } + } + + class son extends father{ + @Override + public ArrayList say() throws Exception { + System.out.println("son"); + return new ArrayList<>(); + } + } +} +``` **2. 重载(Overload)**