c#中子類重寫父類方法的幾種情況,關鍵字:virtual、abstract、override、new。(此處不說abstract,以後補充)
virtual:不是必須被子類重寫的方法,父類必須給出實現,子類可以重寫(使用override,new,或無特殊標誌的普通方法),也可以不重寫該方法。
new:重寫父類方法時,父類可以使用virtual,override,new之一宣告,也可以是沒有關鍵字的普通方法,執行時會根據引用型別選擇呼叫父類還是子類方法,重寫父類方法時,使用new關鍵字與使用沒有關鍵字的普通方法的等效的,但是後者會給出編譯警告。
繼承是派生類(子類)去實現(重寫、重構)基類(父類)的方法或屬性。從而獲取在派生類中要實現的功能。
子類呼叫父類構造方法,在父類中有個實現姓名和年齡的構造方法但是子類中也要實現這樣的功能時,子類不用再次去寫這個功能,只要去呼叫父類的功能即可。
#region
public class person
,您的年齡是.",this._name, this._age);
}
}
public class studnet : person
", this._id);
}
}
class program
}
#endregion
實現結果:
您的姓名是 小王,您的年齡是 18.
您的身份證號碼為 340406
子類呼叫父類方法時,先執行父類的方法,再去執行子類的方法。
重寫只是對方法裡面的功能重新做了編寫,並沒有對方法的引數進行新增,改變,刪除。重寫是物件導向的概念
舉例:重寫show方法
public class person
學習",class);
console.writeline("我叫.我畢業與",name,school);
}
}
public class studnet : person
,畢業學校,曾讀班級",name,school,class);
}
}
class program
}
#endregion
實現結果:
姓名小王,畢業學校家裡蹲大學曾讀班級lol最強王者班 (沒有執行父類中方法)
重寫的父類方法時,必須指明被重寫的方法是虛方法(virtual關鍵字)。在子類重寫父類方法時必須有重寫關鍵字(override)這樣才能重寫父類的方法
過載除了方法名不能被改變為另外什麼都能重新定義(方法作用域、返回型別、方法體、方法引數) (當然也可以只改變部分內容比如只改變方法體,不改變引數)過載是面向過程的概念
過載show方法
測試1:
#region 過載show方法
public class person
}
public class studnet : person
}
class program
}
#endregion
實現結果:
我是子類方法 (沒有執行父類中方法)
測試2:
#region 過載show方法
public class person
學習", class);
console.writeline("我叫.我畢業與", name, school);
}
}
public class studnet : person
", name);
}
}
class program
}
#endregion
實現結果:
姓名小王
子類過載父類方法,子類必須指定過載的關鍵字(new),而父類被過載的方法則可以不用關鍵字(virtual)。過載乙個方法,是對乙個方法重新進行了編寫從方法的引數到方法體,唯獨方法的名稱沒有進行改變。過載也可以對原來沒有返回型別的方法(void),改變為有返回型別的方法。總體來講,過載除了方法名不能被改變,另外什麼都能重新定義(方法作用域、返回型別、方法體、方法引數)
C 中繼承實現父類方法 重寫 過載
c 中子類重寫父類方法的幾種情況,關鍵字 virtual abstract override new。此處不說abstract,以後補充 virtual 不是必須被子類重寫的方法,父類必須給出實現,子類可以重寫 使用override,new,或無特殊標誌的普通方法 也可以不重寫該方法。new 重寫父...
子類繼承父類時候的重寫和過載
class a public class b extends a 正確,重寫父類方法,可以擴大訪問許可權 private int method1 int a,int b 錯誤,重寫父類方法,不能降低了訪問許可權 private long method1 int a,int b 錯誤,重寫父類方法,不...
重寫父類方法
class animal def eat self print 吃 def drink self print 喝 class dog animal def bark self print 汪汪叫 class xtq dog 定義了乙個哮天犬 類 def bark self print 嗷嗷叫 cla...