写点什么

Java 中的重载和重写的区别

作者:共饮一杯无
  • 2022-10-13
    浙江
  • 本文字数:1426 字

    阅读完需:约 5 分钟

Java中的重载和重写的区别

重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法

重载

发生在同一个类中(或者父类和子类之间),方法名必须相同,参数类型不同、个数不同、顺序不同,与修饰符和返回值类型无关。下面是《Java 核心技术》对重载这个概念的介绍:



综上:重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。案例:比较两个数据是否相等。参数类型分别为两个 byte 类型,两个 short 类型,两个 int 类型,两个 long 类型,并在 main 方法中进行测试。


public class Method_Demo6 {    public static void main(String[] args) {        //定义不同数据类型的变量        byte a = 10;        byte b = 20;        short c = 10;        short d = 20;        int e = 10;        int f = 10;        long g = 10;        long h = 20;        // 调用        System.out.println(compare(a, b));        System.out.println(compare(c, d));        System.out.println(compare(e, f));        System.out.println(compare(g, h));    }    // 两个byte类型的    public static boolean compare(byte a, byte b) {        System.out.println("byte");        return a == b;    }    // 两个short类型的    public static boolean compare(short a, short b) {        System.out.println("short");        return a == b;    }    // 两个int类型的    public static boolean compare(int a, int b) {        System.out.println("int");        return a == b;    }    // 两个long类型的    public static boolean compare(long a, long b) {        System.out.println("long");        return a == b;    }}
复制代码

重写

重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。


  1. 返回值类型、方法名、参数列表必须相同,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类

  2. 如果父类方法访问修饰符为 private/final/static 则子类就不能重写该方法,但是被 static 修饰的方法能够被再次声明。

  3. 构造方法无法被重写


综上:重写就是子类对父类方法的重新改造,外部样子不能改变,内部逻辑可以改变


方法的重写要遵循 两同两小一大


  • “两同”即方法名相同、形参列表相同;

  • “两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;

  • “一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。


class Animal{   public void move(){      System.out.println("动物可以移动");   }} class Dog extends Animal{   public void move(){      System.out.println("狗可以跑和走");   }   public void bark(){      System.out.println("狗可以吠叫");   }} public class TestDog{   public static void main(String args[]){      Animal a = new Animal(); // Animal 对象      Animal b = new Dog(); // Dog 对象       a.move();// 执行 Animal 类的方法      b.move();//执行 Dog 类的方法      b.bark();   }}
复制代码


本文内容到此结束了,

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力

如有错误❌疑问💬欢迎各位指出。

主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

发布于: 刚刚阅读数: 7
用户头像

鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入

全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。

评论

发布
暂无评论
Java中的重载和重写的区别_Java_共饮一杯无_InfoQ写作社区