2012-04-01 62 views
0

理論的東西我不知道的一兩件事。面向對象編程有兩件事。我想知道有關編程

  1. 構造

  2. 方法

其中哪一個可以被重載和一個覆蓋?

謝謝!

回答

1

既可以被重載。重載意味着擁有兩個或多個名稱完全相同但簽名不同的方法或構造函數。一些事情,如:

public myClass(String a){} 
public myClass(Double d){} 

或方法:

public void aMethod(String s){} 
publis int aMethod(Double d){ 
return 0; 
} 

編輯: bebin,覆蓋通常有繼承,當超類實現的方法,但子類需要以其他方式實現該方法,例如:超級類中的 :

public int doSomething(){ 
    return a+2; 
} 

但在子類:

@override 
public in doSomething(){ 
return a*2; 
} 

約構造覆蓋下面一行是從CollinD,我引用它: 「構造函數是不正常的方法和他們不能被「覆蓋」。說一個構造函數可以被重載會意味着一個超類的構造函數將是可見的,並且可以被調用來創建一個子類的實例。這不是真的......一個子類默認沒有任何構造函數(除非無參數構造函數,如果它繼承的類有一個)。它必須顯式聲明任何其他構造函數,並且這些構造函數屬於它,而不屬於它的超類,即使它們採用與超類構造函數相同的參數。

你提到有關默認的東西,沒有參數構造僅僅是構造函數是如何工作的,並沒有任何與壓倒一切的一個方面「。

+0

葉我研究了那個,但請閱讀以上評論..我問一個情境問題。什麼關於覆蓋?還有,這是什麼 ?我真的沒有研究,可以請你解釋例如,我很感謝你:) – 2012-04-01 14:25:01

+0

我編輯的帖子,但我想你已經找到了你的答案。只是功能谷歌 – MoienGK 2012-04-01 14:38:58

+0

謝謝這是比以前更合適一個以前謝謝很多:) – 2012-04-01 14:50:42

1

這可能取決於語言,但理論上兩者既可以是超載和重載。

C#一切的例子:

class Parent { 
    protected string Name; 

    public Parent(string name) { 
     this.Name = name; 
    } 

    public Parent(string firstName, string lastName) { 
     this.Name = firstName + " " + lastName; 
    } 

    public virtual string GetName() { 
     return this.Name; 
    } 
} 

class Child : Parent { 
    public Child(string firstName) : base(firstName, "Doe") {} 

    public override string GetName() { 
     return this.Name = " Jr."; 
    } 

    public string GetName(string prefix) { 
     return prefix + " " + this.GetName(); 
    } 
} 

這示出的構造和方法覆蓋和構造函數和方法重載。

+0

沒有人我確認構造函數不能覆蓋:)但不知道方法 – 2012-04-01 14:16:28

+0

@AliRaza:PHP不同意:)你是否有特定的語言? – Ryan 2012-04-01 14:16:57

+0

@AliRaza可以用各種語言重寫構造函數。 Python是另一個例子。 – delnan 2012-04-01 14:17:46

0

可以Overload和Override兩個構造和方法。(我想構造是真的只是一種特殊的方法。)

覆蓋允許子類替換其父類的實現。

重載允許您創建採用不同參數列表的方法的不同版本。

+0

好吧,這是一個明確的答案太我謝謝很多親愛的:) – 2012-04-01 14:27:19