Java 重写时应当遵守的 11 条规则

下面是关于“Java 重写时应当遵守的 11 条规则”的详细讲解攻略。

概述

当我们在Java中使用继承时,重写父类中的方法是常见的操作。但是,如果我们不遵守适当的规则,就会出现问题。这些问题包括出错、程序崩溃以及不正确的行为。为了规避这些问题,以下是重写Java方法时应该遵守的11条规则。

11条规则

1. 参数列表必须完全一致

重写时必须与父类完全匹配的一个要求是参数列表必须相同,包括参数类型和参数顺序。

2. 返回类型必须相同

重写方法的返回类型必须与被重写方法的返回类型完全匹配。但是,可以使用子类对象覆盖原始类型。例如:

public class A {
   public Object getSomething() {
      return null;
   }
}

public class B extends A {
   @Override
   public String getSomething() {
      return "something!";
   }
}

3. 访问修饰符不得弱于被重写方法

重写方法的访问修饰符不能比被重写方法的更加严格。例如,如果被重写方法是public,那么重写的方法也必须是public。

4. 实例方法不能重写为静态方法

静态方法不能被重写为实例方法。

5. 静态方法不能被重写为实例方法

实例方法不能被重写为静态方法。

6. final方法不能被重写

final方法不能被重写。

7. private方法不能被重写

private方法不能被重写,因为它们是只能在类内部使用的。

8. 抛出的异常不能超过被重写方法的异常

重写方法不能抛出被重写方法未声明的异常或者超过被重写方法所声明的异常。例如:

public class A {
   public void foo() throws IOException {}
}

public class B extends A {
   // 这里的异常类型必须是 IOException,而不能是 Exception
   @Override
   public void foo() throws IOException {}
}

9. 默认访问级别不能降低

进行重写时,访问级别不能降低。例如,如果父类中的方法是default级别,那么子类中该方法也必须是default级别。

10. 函数名、参数顺序、参数类型必须完全一致

在重写方法时,必须确保函数名、参数顺序和参数类型与被重写方法完全相同。

11. 重写的方法不能缩小访问权限

重写的方法不能缩小访问权限。例如,如果被重写的方法是public,那么重写的方法也必须是public。

示例说明

例子1

下面是一个例子,演示了如何遵守Java重写规则:

public class A {
    public void doSomething() {}
}

public class B extends A {
    @Override
    public void doSomething() {}
}

在这个例子中,doSomething方法下的所有重写规则都得到了遵守。

例子2

下面是一个例子,演示了违反Java重写规则的情况:

public class A {
    public void doSomething() {}
}

public class B extends A {
     // 缺少@Override注解
    public void dosomething() {}
}

在这个例子中,因为缺少了@Override注解,所以并没有真正重写doSomething方法。

阅读剩余 62%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 重写时应当遵守的 11 条规则 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Android 侧滑按钮的实现代码

    当实现Android侧滑按钮时,可以使用以下步骤: 创建布局文件:首先,创建一个包含侧滑按钮的布局文件。可以使用RelativeLayout或ConstraintLayout作为根布局,并在其中添加一个按钮。例如,以下是一个简单的布局文件示例: <RelativeLayout xmlns:android=\"http://schemas.an…

    other 2023年9月6日
    00
  • C语言动态数组详解

    C语言动态数组详解 什么是动态数组? 在C语言中,数组是一个连续的内存块,数组的大小一旦在初始化时确定,就无法更改。而动态数组的大小是可以在运行时根据需要动态地进行调整的。 动态数组实现方法 使用malloc函数开辟动态数组 1. 数据类型一致 int* arr; int size = 5; arr = (int*)malloc(size * sizeof(…

    other 2023年6月25日
    00
  • mybatis存储无限长度的数据

    以下是“MyBatis存储无限长度的数据的完整攻略,过程中包含两个示例说明”的标准格式文本: MyBatis存无限长度的数据 在MyBatis中,可以使用CLOB和BLOB类型来存储无限长度的字符和二进制数据。本文将介绍如何在MyBatis中存储无限长度的数据。 1. 存储CLOB类型数据 存储CLOB类型数据可以使用#{content, jdbcType=…

    other 2023年5月10日
    00
  • Android Studio轻松构建自定义模板的步骤记录

    下面我将介绍“Android Studio轻松构建自定义模板的步骤记录”的完整攻略。 简介 Android Studio中的模板是一种快速生成常见代码结构的工具。使用模板可以使您的开发更加高效,并帮助您避免手动编写重复的代码。Android Studio中自带了一些模板,但您还可以轻松地创建自己的模板。 步骤 创建自定义模板的步骤如下: 创建模板 在Andr…

    other 2023年6月25日
    00
  • 在windows上安装不同(两个)版本的Mysql数据库的教程详解

    安装不同版本的MySQL数据库在Windows上并不难。为了实现这一目的,可以将不同版本的MySQL安装在不同的文件夹中。接下来,详细讲解在Windows上安装不同版本的MySQL数据库的过程步骤。 步骤1:下载不同版本的MySQL 首先,需要从MySQL官方网站下载多个不同版本的MySQL安装文件,选择相应的Windows版本,同时根据需要选择32位或64…

    other 2023年6月27日
    00
  • iOS10.3更新很慢怎么回事 iOS10.3正式版升级时间太长现象的原因分析

    iOS10.3更新很慢怎么回事——原因分析 背景介绍 当iOS10.3正式版更新时,有许多用户反馈更新时间太长,甚至超过数小时,导致无法使用手机等问题。对此,许多用户都很疑惑,不知道这是什么原因,应该如何解决。 原因分析 网络不畅:在更新时,我们需要从苹果服务器下载文件进行更新。如果服务器的访问量过大,网络将变得拥堵,这将使得更新时间变得很长。 手机存储空间…

    other 2023年6月27日
    00
  • intellijidea2018激活

    以下是关于“IntelliJ IDEA 2018激活”的完整攻略,包括基本概念、步骤和两个示例。 基本概念 IntelliJ IDEA是一款由JetBrains开发的Java集成开发环境(IDE),它提供了丰富的功能和工具,帮助开发人员更高地开发Java应用程序。IntelliJ IDEA 2018是IntelliJ IDEA的一个版本,它在2018年发布。…

    other 2023年5月7日
    00
  • Android实现动态定值范围效果的控件

    当在Android应用中实现动态定值范围效果的控件时,可以按照以下攻略进行操作: 1. 创建自定义控件 首先,您需要创建一个自定义控件来实现动态定值范围效果。您可以继承现有的控件类(如SeekBar)或创建一个全新的自定义控件类。以下是一个示例: public class RangeSeekBar extends SeekBar { private int …

    other 2023年10月12日
    00
合作推广
合作推广
分享本页
返回顶部