1. 程式人生 > >JAVA中方法重寫和過載的區別

JAVA中方法重寫和過載的區別

JAVA中方法的過載與重寫的區別

過載

1. 方法過載是讓類以統一的方式處理不同型別資料的一種手段。
多個同名函式同時存在,具有不同的引數個數/型別。
過載Overloading是一個類中多型性的一種表現。 
2. Java的方法過載,就是在類中可以建立多個方法,
它們具有相同的名字,但具有不同的引數和不同的定義。
呼叫方法時通過傳遞給它們的不同引數個數和引數型別來決定具體使用哪個方法,
 這就是多型性。 
3. 過載的時候,方法名要一樣,但是引數型別和個數不一樣,
返回值型別可以相同也可以不相同。無法以返回型別作為過載函式的區分標準。
public class Computer {
public void add(int a,int b){

int i=a+b;
System.out.println(i);
}
public void add(double a,double b){
double i=a+b;
System.out.println(i);
}
public void add(String a,String b){
String j=a+b;
System.out.println(j);
}


public static void main(String[] args) {
Computer c=new Computer();
c.add(1, 1);
c.add(1.1,1.1);
c.add("hel", "lo");

}


}


重寫
1.  父類與子類之間的多型性,對父類的函式進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。 

2.  若子類中的方法與父類中的某一方法具有相同的方法名、返回型別和引數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。 
3. 子類函式的訪問修飾許可權不能少於父類的。


class Stu{
 String sName;
 void display(String name){
  System.out.println("我是一名學生,我的名字是:"+name);
 }
}
class CollegeStu extends Stu{
 String sMajor;
 void display(String name){
  System.out.println("-----------------------");

  System.out.println("我是一名大學生,我的名字是:"+name);
  sMajor="計算機";
  System.out.println("我學習得專業是:"+sMajor);
 }
}
class MiddleStu extends Stu{
 String sSubject;
 void display(String name){
  System.out.println("-----------------------");
  System.out.println("我是一名中學生,我的名字是:"+name);
  sSubject="理科";
  System.out.println("我學習得專業是:"+sSubject);
 }
}
public class OverrideDemo{
 public static void main(String args[]){
  Stu stu=new Stu();
  CollegeStu cstu=new CollegeStu();
  MiddleStu mstu=new MiddleStu();
  Stu s;
  s=stu;
  s.display("小明");
  s=cstu;
  s.display("小坤");
  s=mstu;
  s.display("小白");
 }
}