Java中的重載和重寫

Java中方法的重載和重寫,貫穿在整個Java的學習和運用中,在面試中也經常被問到。

一 方法的重載

要滿足以下條件:

  1 同一個類中;

  2 同名不同參:這裏的參數不同包括參數類型不同,參數個數不同,參數順序不同。

注意:

  1 重載對方法的返回值沒有要求;

  2 構造方法也能重載。

方法的重載舉例:

  1. package com.anjoyo.demo;  
  2.  
  3. public class Person {  
  4.     private String name;  
  5.     private int age;  
  6.       
  7.     public Person() {  
  8.     }  
  9.     public Person(String name, int age) {  
  10.         this.name = name;  
  11.         this.age = age;  
  12.     }  
  13.     public void move(){  
  14.         System.out.println("can move !");  
  15.     }  
  16.     public void move(String s){  
  17.         System.out.println(s+" can move !");  
  18.     }  
  19.       
  20. }  

上面就是構造方法Person()和一般方法Move()的重載

重載方法在調用的時候,通過傳入參數的不同來區分。

二 方法的重寫(覆蓋,覆寫)

要滿足如下條件:

  1 在父子類之間;

  2 同名且同參,返回值類型也相同;

  3 子類方法的修飾符不能比父類方法的修飾符更封閉:這裏指

  4 子類方法拋出的異常不能比父類方法中拋出的異常更寬泛

舉例如下:

父類Person:

  1. package com.anjoyo.demo;  
  2.  
  3. public class Person {  
  4.     protected void move() throws RuntimeException{  
  5.         System.out.println("can move !");  
  6.     }  
  7. }  

子類Student:

  1. package com.anjoyo.demo;  
  2.  
  3. public class Student extends Person{  
  4.     public void move() throws NullPointerException{  
  5.         System.out.println("Student running !");  
  6.     }  
  7. }  

這樣就構成了move()方法的重寫。

說明:

  1  Person中的方法修飾符爲protected,所以在Student類的move()方法的修飾符可以是protected,可以是public。

  2 Person中的move()方法拋出RuntimeException,所以Student中的move()方法只能拋出RuntimeException,或者RuntimeException的子類,不能拋出Exception,IOException等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章