重写和重载

作者: 朱兰Juran | 来源:发表于2022-04-16 08:20 被阅读0次

方法重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写。

重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。

下面是一个例子:

class Animal {

  public void barking() {

      System.out.println("Hi");

  }

}

class Dog extends Animal {

  public void barking() {

      System.out.println("Woof-Woof");

  }

}

在上面的代码中,Dog 类重写了其父类 Animal 的 barking() 方法。

方法的主要重写规则:

必须有相同的参数列表和返回类型。

访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

声明为final或static的方法不能被重写。

构造方法不能被重写。

如果不能继承一个方法,则不能重写这个方法。


方法重载

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

重载规则:

被重载的方法必须改变参数列表(参数个数或类型不一样);

被重载的方法可以改变返回类型;

被重载的方法可以改变访问修饰符;

被重载的方法可以声明新的或更广的检查异常;

方法能够在同一个类中或者在一个子类中被重载。

无法以返回值类型作为重载函数的区分标准。

例子:

public class Overloading {

    public int test(){

        System.out.println("test1");

        return 1;

    }

    public void test(int a){

        System.out.println("test2");

    } 

    //以下两个参数类型顺序不同

    public String test(int a,String s){

        System.out.println("test3");

        return "returntest3";

    } 

    public String test(String s,int a){

        System.out.println("test4");

        return "returntest4";

    } 

    public static void main(String[] args){

        Overloading o = new Overloading();

        System.out.println(o.test());

        o.test(1);

        System.out.println(o.test(1,"test3"));

        System.out.println(o.test("test4",1));

    }

}

提示:被重载的方法必须改变参数列表(参数个数或类型或顺序不一样)。


重写与重载之间的区别

重写与重载的区别

总结

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。

(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。

(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

相关文章

  • JAVA基础之重写和重载

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

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

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

  • 面向对象的基本原则

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

  • 方法的重写(override/overwrite)

    方法的重载和重写

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

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

  • 02.Java面向对象问题

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

  • java面试题

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

  • 重写和重载

    重写:子类重写父类的方法,方法名和参数不变,改变实现类容;重载:同一个类中重载方法,名字相同,参数不同,返回类型随...

  • 重写和重载

    子类重写父类方法:方法名相同,参数相同。该方法假如是 get()此时,在外部调用时,调用子类该方法 显示重写方法...

  • 重载和重写

    方法的重载: 方法的重载,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不同,无法以返回值类...

网友评论

    本文标题:重写和重载

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