Java中方法重写和方法重载 - qq1312583369

qq1312583369 2021-08-08 原文


Java中方法重写和方法重载


 

一、方法重写(Override)

        在Java中如何来定义重写:Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),同时也可以对父类中的方法进行扩展,以增强自己的功能,这样就称之为重写,也称为复写或者覆盖。所谓方法重写就是子类的方法和父类中继承下来的方法具有完全相同的方法名、返回值类型、方法的参数个数以及参数类型,这样才能被称为方法重写。

代码体现:

// 这是父类的定义
public class Person {

    public void eat() {
         System.out.println("=====这是父类Person的eat方法=======");
     }
}

// 这是子类的定义
public class Student extends Person {

    @Override
    public void eat() {
       System.out.println("===这是子类Student的eat方法===");
    }
 
    // main方法测试
   public static void main(String[] args) {
       Student student = new Student();
       student.eat();  //输出:===这是子类Student的eat方法===
     }
}

 

子类重写父类的方法后,在实例化子类的时候则调用的是子类中的方法,父类的方法就如同被覆盖了一样。如果在子类中需要调用父类的方法,则在子类方法中使用super关键字调用父类的方法,格式:super.父类中的方法名(参数列表)。

     

       重写规则:

在进行方法重写的时候需要遵循以下规则才能实现方法重写:

(一)子类方法的参数列表必须和父类中被重写的方法的参数列表相同(参数个数和参数类型),否则只能实现方法的重载。

(二)子类方法的返回值类型必须和父类中被重写的方法返回值类型相同,否则只能实现方法重载。

(三)在Java规定,子类方法的访问权限不能比父类中被重写的方法的访问权限更小,必须大于或等于父类的访问权限。

(四)在重写的过程中,如果父类中被重写的方法抛出异常,则子类中的方法也要抛出异常。但是抛出的异常也有一定的约束—>子类不能抛出比父类更多的异常,只能抛出比父类更小的异常,或者不抛出异常。例如:父类方法抛出Exception,那么子类就只能抛出IOException或者抛出比Exception小的异常或者不抛出异常。

 

二、方法重载(Overload)

    在Java中如何定义重载:在Java中通过在类中写多个方法,这类方法的方法名相同,方法的参数列表不同(参数的个数和参数类型的不同)来事现方法的重载。所谓方法重载就是:在一个类中,有一系列的方法具有方法名相同,但参数列表不同,这类方法的现就是方法重载。注意构造方法也可以重载。

 

代码体现:

// 这是父类的定义
public class Person {

 /*
  * protected void eat() throws Exception{
  * System.out.println("=====这是父类Person的eat方法======="); }
  */

   public Person() {
        System.out.println("这是无参构造方法");
   }

   public Person(String name) {
        System.out.println("这是有一个参数的构造方法参数name=" + name);
   }

   void print() {
       System.out.println("====无参print方法====");
   }

  void print(String str) {
       System.out.println("====有一个参数的print方法====");
   }

  void print(String str, int a) {
      System.out.println("====有两个参数的print方法====");
   }
}

在对象调用这些方法的时候,Java VM会根据不同的参数列表来执行不同的方法体,这就是多态的一种体现。

 

    重载规则:

在进行方法重载的时候需要遵循以下的规则:

(一)再使用方法重载的时候,必须通过方法中不同的参数列表来实现方法的重载。如:方法的参数个数不同或者方法的参数类型不同。

(二)不能通过访问权限,返回值类型和抛出的异常来实现重载

(三)方法的异常类型和抛出异常的数目不会影响方法的重载,也就是说重载的方法中允许抛出不同的异常

(四)可以有不同的返回值类型,只要方法的参数列表不同即可

(五)可以有不同的访问修饰符

 

三、重写与重载的区别

 

区别点

重载

重写(覆写)

英文

Overloading

Overiding

定义

方法名称相同,参数的类型或个数不同

方法名称、参数类型、返回值类型全部相同

对权限没有要求

被重写的方法不能拥有更严格的权限

范围

发生在一个类中

发生在继承类中

 

注意:构造方法不能被继承,因此不能被重写,在子类中只能通过super关键字调用父类的构造方法;但是可以被重载。

posted on
2019-01-10 10:39 
qq1312583369 
阅读(368
评论(0
编辑 
收藏 
举报

 

版权声明:本文为qq1312583369原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qq1312583369/p/10248517.html

Java中方法重写和方法重载 - qq1312583369的更多相关文章

  1. 盘点大厂的那些开源项目 – 华为

    HarmonyOS 鸿蒙系统(HarmonyOS),是第一款基于微内核的全场景分布式OS,是华为自主研发的操作 […]...

  2. 二叉树总结(四)平衡二叉树 – 乘风有时

    二叉树总结(四)平衡二叉树 平衡二叉树概念 AVL树是根据它的发明者G.M. Adelson-Velsky和E […]...

  3. B2B,B2C,C2C,C2B,M2C,I2C之间的区别 – WEB-网站建设分享交流

    B2B,B2C,C2C,C2B,M2C,I2C之间的区别 B2B,B2C,C2C,C2B,M2C,I2C之间的 […]...

  4. Wireshark的使用 – 古风尘

    Wireshark的使用 一、Wireshark(前程Ethereal)是一个网络封包分析软件。网络封包分析软 […]...

  5. k8s基于CA签名的双向数字证书认证(三) – Captain_Li

    k8s基于CA签名的双向数字证书认证(三) 1、设置kube-apiserver的CA证书相关的文件和启动参数 […]...

  6. 医疗器械软件产品经理必读的法规及标准-YY/T0664(二) – Turing03

    上节主要讲了软件开发策划、软件需求分析、软件系统结构设计三个阶段,这节来分析以下几个阶段。 1.软件单元实现 […]...

  7. 易思企业网站管理系统ESPCMS去前台版权 – scgw

    易思企业网站管理系统ESPCMS去前台版权 易思企业网站管理系统(ESPCMS V5)是一个功能强大的企业网站 […]...

  8. 时间复杂度 – Convert 计算次数 TO 时间复杂度 – frank_cui

    时间复杂度 – Convert 计算次数 TO 时间复杂度 我们假设计算机运行一行基础代码需要执行 […]...

随机推荐

  1. XCode各个版本下载地址

    Xcode 7 beta 3:https://developer.apple.com/services-acc […]...

  2. java web支持jsonp跨域

    404...

  3. linxu安装方式

    安装Linux操作系统的5种方法以及心得这几天没有调别的东西,想起自己还不太会在没有安装光盘的时候安装Linu […]...

  4. 隱藏在素數規律中的Pi — BZOJ1041解題報告

    退役狗在刷程書的過程中看到了一個有趣的視頻, 講解了一個有趣的問題. 在網上隨便搜索了一下居然還真的找到了一道 […]...

  5. Bug管理机制

    1.BUG类型 (1)迭代测试BUG; (2)接口测试BUG; (3)产品UAT验收测试BUG; (4)生产环 […]...

  6. MongoDB安装配置教程 – 路修远而求索

    MongoDB安装配置教程 数据是每一前端人员必定接触的一样,所有的数据都是后端来编写,如果自己想练习项目,却 […]...

  7. 想入门Web安全,这些基础知识都学会了吗?

    实力不够别指望运气来凑 来i春秋,传授硬核技能 毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在 […]...

  8. js超链接锚点定位

    <html> <head> <meta charset=”UTF-8 […]...

展开目录

目录导航