美文网首页
重写&重载

重写&重载

作者: 竹鼠不要中暑 | 来源:发表于2019-02-14 22:55 被阅读29次

重写(Override)和重载(Overload)的区别

区别点 重载方法 重写方法
参数列表 必须修改 一定不能修改
返回类型 可以修改 一定不能修改
异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
访问 可以修改 一定不能做更严格的限制(可以降低限制)

所以重写就是方法内的逻辑改变,但方法名、参数列表、返回值类型等都不能变;而重载则是方法名不变,其他都可以变,其中参数列表必须改变。

总结:

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,方法重载一个类多态性表现,而方法重写子类与父类的一种多态性表现。

  • 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同;
  • 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法。

举例

学习了这一节,我发现我在上一节“继承”中写的例子实际上就使用了重写和重载:

// 父类
public class Wolf {
    private int age;
    private double weight;
    protected String name = "wolf";

    public Wolf(int age) {
        this.age = age;
    }

    public Wolf(int age, double weight) {
        this(age);
        this.weight = weight;
    }

    public void eat() {
        System.out.println("Wolf: eat");
    }
}

Wolf类中写了两个构造函数,它们的参数列表不同,这就是重载,体现了一个类的多态性;

// 子类
public class Dog extends Wolf {
    protected String name = "dog";

    public Dog(int age, double weight) {
        super(age, weight); // 调用父类的构造方法
    }
    @Override
    public void eat() {
        System.out.println("Dog: eat");
    }

    public void eatTest() {
        super.eat(); // 调用与父子同名的父类成员方法
        this.eat();
    }

    public void printNameTest() {
        System.out.println("Father's name: " + super.name);
        System.out.println("My's name: " + name);
    }
}

Dog类中也有一个eat方法,和它的父类Wolf的eat方法参数列表和返回值类型相同(都无),只是输出的具体内容不同,这就是重写,体现了父类和子类的多态性。并且,如eatTeat方法中所示,在子类中可以通过super关键字调用父类被重写的方法。

相关文章

  • 重写&重载

    重写(Override)和重载(Overload)的区别 所以重写就是方法内的逻辑改变,但方法名、参数列表、返回值...

  • JAVA基础之重写和重载

    重写和重载详细区分: Java 重写(Override)与重载(Overload) | 菜鸟教程 核心区分:重写(...

  • 重写(overwrite) 和 重载(overload)的区别

    重载 重写:

  • 方法重载与方法重写(@Overload @Override)

    java方法重载和方法重写(方法覆盖)的区别: 方法重载: Overload 方法重写: Override 批判,...

  • 面向对象的基本原则

    基本要素: 封装 , 继承 , 多态 多态 : 注意重写和重载 重写: 子类重写父类的方法 重载: 同样的方法名 ...

  • java方法重写与重载

    java方法重写与重载 重写:子类重写父类方法,形参、返回值不变,即外壳不变,核心重写 z重载:方法名相同,参数不同

  • 重载,重写

    package com.lixing.mianxiangduixiang03; class Test { publ...

  • 5.Java重载和重写的区别

    Java 方法重载和方法重写的区别有哪些? 解析:先明白重载和重写的定义。 一、方法重写(0verride) 在J...

  • 02.Java面向对象问题

    目录介绍 2.0.0.1 重载和重写的区别?重载和重写绑定机制有何区别?父类的静态方法能否被子类重写? 2.0.0...

  • java面试题

    重载和重写 引用深入理解Java中的重写和重载 重写的条件 参数列表必须完全与被重写方法的相同;返回类型必须完全与...

网友评论

      本文标题:重写&重载

      本文链接:https://www.haomeiwen.com/subject/tupyeqtx.html