天天看點

java中重載一定在一個類裡面嗎?

雖然這些概念在翻譯成中文的過程中,有很多不同的翻譯方式

但本質上隻有兩種說法,就是Override和Overload

其中,Overload一般都被翻譯成重載

而Override的翻譯就亂七八糟了,所謂覆寫、覆寫、重寫、改寫指的其實都是這個意思

那麼為什麼會有這麼多名詞,而不能統一一下呢?

打一個最簡單的比喻吧,為什麼老婆這個詞有這麼多叫法?而不能統一一下呢?

這個原因就不用我說了吧呵呵

是以,不管這個單詞被翻譯成多少種說法

在你學習的過程中,你隻需要按照一種你喜歡的說法來使用就可以了

而對于其他的說法,你隻需要在看到别人使用的時候

能夠知道這跟你使用的某個說法的含義是一樣的,就可以了

是以,在這裡這個問題可以簡化為

Overload和Override定義和差別是什麼?

為了友善講解,在這裡我将使用“重載”和“覆寫”這兩個名詞

其中重載就是Overload,覆寫就是Override,你心裡明白就可以了~

下面給出最基本的重載和覆寫的定義吧:

在同一個類中,如果定義了多個方法名相同,但是可以通過參數進行區分的方法,那麼這些方法就可以稱之為重載

在子類中,如果定義了方法名、參數和傳回值都與父類完全相同的方法,那麼子類中的這個方法就可以稱之為覆寫了父類中的方法

是以,你隻需要嚴格記住以上兩個定義,就很容易區分重載和覆寫了

下面就結合上面的定義,再來看看你給出的代碼吧:

[code=java]
class SuperClass { 
  public void method(int x, double y) { 
    System.out.println("我是父類SuperClass"); 
  } 

  public void method(int x) {
    System.out.println("我肯定是重載了");
  } 
}[/code]      

在這裡可以看出,由于method(int x)和method(int x, double y)的方法名相同,但是參數可以區分

是以這兩個method就是重載關系

再來看下面這段代碼:

[code=java]
class SubClass1 extends SuperClass { 
  public void method(int x, double y) { 
    System.out.println("我重定義了父類SuperClass,即覆寫了父類方法"); 
  } 
}[/code]      

在這裡可以看出,由于SubClass1繼承了SuperClass

并且SubClass1中定義的void method(int x, double y)這個方法

和SuperClass中定義的void method(int x, double y)方法的方法名、參數和傳回值完全相同

是以子類中的這個method就是覆寫了父類中的這個method

好,如果對上面的兩段代碼的解釋你能夠看懂的話

那我也來給出一段代碼吧,看你能不能看的懂~

[code=java]
class SubClass3 extends SuperClass { 
  public void method(int x, double y) { 
    System.out.println("我是子類Subclass3"); 
  } 

  public void method(int x) { 
    System.out.println("我是重載還是覆寫呢?");
  } 
}[/code]