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方法。

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

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

相关文章

  • c盘满了怎么清理?

    C盘是我们日常使用的计算机系统所在的系统盘,在我们平时的使用过程中会逐渐积累大量的文件,导致C盘空间不足。如果C盘空间不足,系统可能会崩溃、出现冻结、运行缓慢等问题。为了解决这些问题,我们需要及时清理C盘。 以下是C盘满了的实用清理方法和建议: 一、清理系统临时文件 Windows操作系统会产生大量的系统临时文件,不仅会占用C盘空间,而且会影响系统运行速度。…

    其他 2023年4月16日
    00
  • C++中的string库函数常见函数的作用和使用方法

    我们就来详细讲解一下C++中的string库函数常见函数的作用和使用方法。 C++中的string库函数常见函数 C++中string库是用来处理字符串的一个库,它提供了很多常用的函数来操作字符串。 1. 字符串长度 获取字符串长度的函数是size()或length(),两者的作用是相同的,都是返回字符串的长度。 示例: #include <iostr…

    other 2023年6月20日
    00
  • PHP递归统计系统中代码行数

    下面是关于如何递归统计PHP代码行数的完整攻略: 准备工作 在开始之前,我们需要确保一些准备工作已经完成。首先,确保你的机器上已经安装了PHP解释器。其次,我们需要一些待统计的PHP代码,这些代码可以是单个文件或整个项目的源代码。最后,我们需要一个统计代码行数的脚本,我们将在后面的步骤中创建。 统计代码行数的思路 在开始编写代码之前,我们需要先了解一下统计代…

    other 2023年6月27日
    00
  • React中的路由嵌套和手动实现路由跳转的方式详解

    React中的路由嵌套和手动实现路由跳转的方式详解 React是一个流行的JavaScript库,用于构建用户界面。在React应用程序中,路由是一种管理不同页面之间导航的重要机制。本攻略将详细讲解React中的路由嵌套和手动实现路由跳转的方式。 路由嵌套 路由嵌套是指在React应用程序中,一个页面可以包含其他页面的情况。这种嵌套关系可以通过React R…

    other 2023年7月28日
    00
  • ASP.NET Lable中进行换行解决方案

    当我们需要在ASP.NET Label控件中显示较长文本时,可能会出现文本不能自动换行的问题。为了解决这个问题,可以采用以下两种方法: 方法一 使用\n在文本中添加换行符 在文本中添加换行符是一种比较简单的方式。我们可以在需要换行的位置添加\n符号,这个符号表示一个换行。 例如: <asp:Label ID="lblDescription&q…

    other 2023年6月26日
    00
  • 一文带你吃透Java中的String类

    一文带你吃透Java中的String类 介绍 在Java中,String类代表一个字符串。常用的字符串操作都可以通过String类提供的方法来实现。本文将详细讲解Java中的String类,包括创建字符串、字符串的常用方法以及字符串的不可变性等。通过本文的学习,读者将能够深入了解Java中的字符串操作。 创建字符串 创建字符串有两种方式:直接使用字符串字面量…

    other 2023年6月20日
    00
  • BBSMAX

    BBSMAX BBSMAX是一款开源的论坛软件,它具有丰富的论坛功能和可定制性。在使用过程中,用户可以轻松地创建自己的社区,并为社区的设计和功能进行自定义。 功能特点 BBSMAX具有许多先进的功能,包括但不限于: 完善的内容管理系统,包括帖子、评论、私信、通知等 支持多种主题皮肤,允许用户自定义网站外观和风格 内置的用户管理系统,允许管理员轻松管理用户、版…

    其他 2023年3月28日
    00
  • 详解C语言中的内存四区模型及结构体对内存的使用

    详解C语言中的内存四区模型及结构体对内存的使用 1. 内存四区模型 在C语言中,内存被划分为四个区域,分别是代码区、全局区、栈区和堆区。每个区域有不同的特点和用途。 1.1 代码区 代码区存储程序的执行代码,是只读的。在程序运行时,代码区的内容被加载到内存中,并且不允许修改。这个区域通常包含程序的指令和常量数据。 1.2 全局区 全局区存储全局变量和静态变量…

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