方法的覆盖(override)、重载(overload)和重写(overwrite)

 

覆盖(override)

继承了父类的同名无參函数:当子类从父类继承一个无參方法,而又定义了一个同样的无参数的方法时,则子类新写的方法覆盖父类的方法,成为覆盖。

Example

class Super{
    public void NoParametersMethod(){
        System.out.println("Super Method....");
    }
}

class subClass extends Super {
    public void NoParametersMethod(){
        System.out.println("subClacc Method....");
    }   
}

class override{
    public static void main(String[] args) {
        subClass sub = new subClass();
        sub.NoParametersMethod();
    }
}

Output

subClacc Method....

重载(overload)

继承了父类的同名有參函数:当子类继承了父类的一个同名参数,且方法参数表不同,则称为重载,通过方法重载,子类可以重新实现父类的某些方法,使其具有自己的特征。

Example

class Super{
    public void WithParametersMethod(int a){
        System.out.println("Super Method:"+a);
    }
}

class subClass extends Super {
    public void WithParametersMethod(int a,int b){
        System.out.println("subClacc Method:"+a+","+b);
    }   
}

class overload{
    public static void main(String[] args) {
        subClass sub = new subClass();
        sub.WithParametersMethod(0);
        sub.WithParametersMethod(1,2);
    }
}

Output

Super Method:0
subClacc Method:1,2

重写(overwrite)

当前类的同名方法:通过方法重写,一个类中可以有多个具有相同名字的方法,由传递给他们的不同个数和类型的参数,甚至不同参数顺序(不推荐)来决定使用哪种方法

Example

class Curr{
    public void fun(int i) {
        System.out.println("int");
    }
    public void fun(int i,String s){
        System.out.println("int,String");
    }
    public void fun(String s,int i){
        System.out.println("String,int");
    }
}

class override{
    public static void main(String[] args) {
        Curr curr = new Curr();
        curr.fun(0);
        curr.fun(0, "");
        curr.fun("", 0);
    }
}

Output

int
int,String
String,int
原文地址:https://www.cnblogs.com/cmi-sh-love/p/fang-fa-de-fu-gai-override-zhong-zai-overload-he-z.html