javaEE之重载和覆盖重写的区别

重载

在使用重载时只能通过不同的参数样式(Overload)

1、参数的个数不同

public static void get(int a){

}
public static void get(int a, int b){

}

2、参数的类型不同

public static void get(int a){

}
public static void get(double a){

}

3、参数的顺序不同

public static void get(int a,double b){

}
public static void get(double a,int b){

}

4、与参数的返回值类型无关

public static void get(int a){

}
public static int get(int a){

}

重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

覆盖重写(Override)

如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。

1、覆盖重写必须存在父与子类的继承关系中

class Fu { 
    public void show() { 
         System.out.println("Fu show");         
     }     
 } 
class Zi extends Fu { //子类重写了父类的show方法     
     public void show() {     
             System.out.println("Zi show");       
       }     
 }
 public class ExtendsDemo05{ 
        public static void main(String[] args) {  
                Zi z = new Zi();  // 子类中有show方法,只执行重写后的show方法     
                z.show();  // Zi show         
    }      
} 

2、方法名必修相同参数也必修相同

3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>(default)>private)

//就是子类的方法的修饰符必须大于父类的修饰
class Fu { 
    public void show() { 
         System.out.println("Fu show");         
     }     
 } 
class Zi extends Fu { //子类重写了父类的show方法     
     protected void show() { //报错    
             System.out.println("Zi show");       
       }     
 }

4、重写的应用

子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从 而进行扩展增强。比如新的手机增加来电显示头像的功能,代码如下:


public class Phone {
    public void  call(){
        System.out.println("打电话");
    }
    public void messige(){
        System.out.println("发短信");
    }
    public void show(){
        System.out.println("显示号码");
    }
}
//智能手机
public class NewPhone extends Phone {
    public void show(){
        super.show();//调用父类的show()方法
        System.out.println("显示姓名");
        System.out.println("显示头像");
    }

}

注意事项

1.子类方法覆盖父类方法,必须要保证权限大于等于父类权限。

2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!