2008-12-29 77 views
1

我想建立一個很好的API(C#),使人們更容易消耗,我想我以前見過這個,想知道如何做到這一點:如何實現這種類型的OOP結構?

MyNamespace.Cars car = null; 

if(someTestCondition) 
     car = new Honda(); 
else  
     car = new Toyota(); 

car.Drive(40); 

這可能嗎?如果是這樣,需要做些什麼?

+0

我希望你不要期望這兩款車都是基於這種奇異的汽車駕駛方式。變種名稱必須與本田和豐田不同 – Bob 2008-12-29 21:55:38

+0

確定我更改了代碼以使其更準確,謝謝。 – Blankman 2008-12-29 22:05:22

回答

10
Interface Car 
{ 
void Drive(int miles); 
} 

class Honda : Car 
{ 
... 
} 
class Toyota : Car 
{ 
... 
} 
+0

你打敗了我。我會刪除我的 – 2008-12-29 21:51:51

+0

,應該是接口ICar – foson 2008-12-29 21:54:24

1

創建一個名爲Cars的類。給它的驅動器方法。在您的本田和豐田課堂上擴展該基礎班級。

6

您可以通過幾種不同的方法來實現這一點。你可以聲明一個抽象基類,或者你可以有一個你的對象實現的接口。我相信「C#」首選的方法是有一個接口。喜歡的東西:

public interface ICar 
{ 
    public Color Color { get; set; } 

    void Drive(int speed); 
    void Stop(); 

} 

public class Honda : ICar 
{ 

    #region ICar Members 

    public Color Color { get; set; } 

    public void Drive(int speed) 
    { 
     throw new NotImplementedException(); 
    } 

    public void Stop() 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

public class Toyota : ICar 
{ 
    #region ICar Members 

    public Color Color { get; set; } 

    public void Drive(int speed) 
    { 
     throw new NotImplementedException(); 
    } 

    public void Stop() 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 
0
namespace MyNameSpace 
{ 
    public interface Cars 
    { 
    public void Drive(int miles); 
    } 
    public class Honda : Cars 
    { 
    public void Drive(int miles) { ... } 
    } 
    public class Toyota : Cars 
    { 
    public void Drive(int miles) { ... } 
    } 
} 
0

不要忘了命名空間,也看到了有關變量名

namespace MyNamespace { 
    public interface Cars { 
     void Drive(int speed); 
    } 

    public class Honda : Cars { 
     public void Drive(int speed) { 
     } 
    } 
    public class Toyota : Cars { 
     public void Drive(int speed) { 

     } 
    } 
} 
0

做一個叫做汽車的抽象類與稱爲驅動抽象方法的問題,我的評論( )。將其子類化並添加實現。

5

我看到每個人都在向你推送接口/抽象基類的變化。您提供的僞代碼或多或少意味着您已經擁有此代碼。

我會提出別的東西:

你要創建一個「CarFactory」將返回一個具體的實現你的基類/接口。 Create方法可以將測試條件作爲參數,以便創建正確的汽車。

編輯:這裏有一個從MSDN的鏈接 - http://msdn.microsoft.com/en-us/library/ms954600.aspx

編輯:見另一條鏈路的意見。