不可以直接使用父層的方法嗎?
您應該先有一個類別Gun去實作抽象類別AbstractGun,然後用Gun類別建立基本的Shoot方法,最後才是讓各個子類別繼承Gun然後Override Shoot
所以說只是為了一個方法相同而使用繼承,那類別會多到沒完沒了,所以是否有其他方式?
除非您希望每個子類別都必須Override Shoot,不然沒有必要將Shoot宣告在AbstractGun裡,您可以考慮直接拿掉整個abstract class,宣告一個一般class就好
宣告一個一般Class,一樣會有我說的問題
依我的理解您要的感覺是這樣,還是我搞錯了? XDDD
class Gun
{
public void Shoot()
{
// 邏輯寫在這,假設會輸出"蹦蹦"
}
}
class GunA : Gun
{
// 不用再寫 Shoot()
}
class GunB : Gun
{
// 不用再寫 Shoot()
}
Main()
{
GunA a = new GunA();
GunB b = new GunB();
a.Shoot(); // 蹦蹦
b.Shoot(); // 蹦蹦
}
不要太拘泥於繼承吧
寫個shoot類別再傳入阿
大概像這樣
class Shoot
{
void shootA()
//邏輯
void shootB()
//邏輯
}
class MachineGun:AbstractGun
{
Shoot s;
void do()
{
s.shootA();
}
}
class Rifle:AbstractGun
{
Shoot s;
void do()
{
s.shootA();
}
}