• 技术文章 >java >java基础

    重写和重载在java中有何不同?

    小妮浅浅小妮浅浅2020-12-23 14:05:55原创2409

    在对类关系的讨论上,我们可以对类或者是子类进行操作。如果是类的处理,我们可以选择重载。要是针对于子类的定义,就要用到重写。很多新学java的小伙伴会在这两个知识点上混淆概念,所以今天小编整理出了二者上的不同点。接下来我们会从定义、格式、用法上进行分析,探寻重写和重载的不同。

    一.定义不同

    重写(Override):发生在父子类中,是父类与子类之间的多态性,实质是对父类的函数进行重新定义。

    重载(Overload):发生在1个类里面,是让类以统一的方式处理不同类型数据的一种手段,实质表现就是允许一个类中存在多个具有不同参数个数或者类型的同名方法,是一个类中多态性的一种表现。

    .格式不同

    重写格式特点:

    1.方法名、参数列表必须完全一致

    2.返回类型可以相同,也可以不同,不同必须是原来返回类型的子类型(可隐式转换即可)JAVA近期版本的新特性,在之前子类返回值类型必须和父类返回值类型保持一致

    2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)

    3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

    4.**静态只能重写静态。但是这种情况一般不会出现。

    重载格式特点:

    1.方法名相同。

    2.方法的参数表必须不同

    如果参数个数不同,就不管它的参数类型了!

    如果参数个数相同,那么参数的类型必须不同。

    3.方法的返回类型、修饰符可以相同,也可不同。

    三、用法不同

    重写

    package com.etime09;
     
    public class Person {  //创建一个父类Person
    private String name;
    private int age;
    //父类中写一个eat()方法
     public void eat() {
      System.out.println("人都要吃饭");
      }
    }
    ---------------------------------------------
    package com.etime09;
     
    public class Student extends Person {  //Student子类继承Person父类
    @Override
    //重写eat()方法   方法名,参数,返回类型相同;方法体内容不同
    public void eat() {
     System.out.println("学生喜欢吃肉");
       }
    }

    重载

    package com.etime09;
     
    public class Goods {  //创建一个商品类 
    private String ID;
    private int price;
    private String name;
    private String manufactureDate;
    //实现构造函数的重载 参数个数或类型不同
    public Goods() {
    super();
    // TODO Auto-generated constructor stub
    }
    public Goods(String iD) {
    super();
    ID = iD;
    }
    public Goods(String iD, int price) {
    super();
    ID = iD;
    this.price = price;
    }
    public Goods(String iD, int price, String name) {
    super();
    ID = iD;
    this.price = price;
    this.name = name;
    }
    public Goods(String iD, int price, String name, String manufactureDate) {
    super();
    ID = iD;
    this.price = price;
    this.name = name;
    this.manufactureDate = manufactureDate;
    }

    以上就是我们在java中对于重写和重载不同点的讨论,相信大家现在已经能分清二者的不同了,下次使用的时候不要再把二者的概念记错啦。

    专题推荐:java重写和重载
    上一篇:重载怎样在java基础中实现? 下一篇:string如何在java中创建?

    相关文章推荐

    • java继承如何访问变量?• java中软引用是什么?怎么用?• 弱引用怎样在java中回收?• java基础:虚引用如何使用?• java中规则引擎是什么?有什么用?• java常见规则引擎有哪些?分别是什么?• 重载怎样在java基础中实现?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网