`

java override overwrite与overload

阅读更多

    Overload是重载的意思,Override是覆盖的意思,也就是重写。
    重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
    重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相 当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父 类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

    多态有两种表现形式,就是重载和覆盖。

    比较说明:

    Overload:是重载的意思,这没啥能混淆的了,就是在同一个类当中,为了增加通用性,写了很多方法,这些方法只有一个要求,参数的数量和类型不同,但返回值和方法属性必须相同,否则不属于重载。重载是针对相同的一个类而言,也就是说一个类可以有很多同名不同参的方法。
    Override:有人翻译是重写,有人翻译是覆写,覆盖等。其实更像是一种扩展,因为它是在父类中声明方法(一般是抽象的),在子类中根据需求去具体定义方法的行为(即modify behavior as needed)
它要求override的方法有相同的名字、相同的参数、相同的返回值类型(即the same name, number and type of parameters, and return type)。它是一种晚绑定,是决定java多态的一种方式。
    Overwrite:java中就没有它的存在,就别以讹传讹了,java官方文档没有该词的出现,但是国外有人把overwrite解释为override。重写是针对不同的类而言,而且不同的类存在着继承关系,也就说子类可以有个和父类一样的同名同参方法。

      实例:
      Overriding, which is what I think you mean by "overwriting" is the act of providing a different implementation of a method inherited from a base type, and is basically the point of polymorphism by inheritance, i.e.

      Bicycle类:

public class Bicycle implements Vehicle {
    public void drive() { ... }
}

     Motorcycle类:

public class Motorcycle extends Bicycle {
    public void drive() {
        // Do motorcycle-specific driving here, overriding Bicycle.drive()
        // (we can still call the base method if it's useful to us here)
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics