我想建立一個很好的API(C#),使人們更容易消耗,我想我以前見過這個,想知道如何做到這一點:如何實現這種類型的OOP結構?
MyNamespace.Cars car = null;
if(someTestCondition)
car = new Honda();
else
car = new Toyota();
car.Drive(40);
這可能嗎?如果是這樣,需要做些什麼?
我想建立一個很好的API(C#),使人們更容易消耗,我想我以前見過這個,想知道如何做到這一點:如何實現這種類型的OOP結構?
MyNamespace.Cars car = null;
if(someTestCondition)
car = new Honda();
else
car = new Toyota();
car.Drive(40);
這可能嗎?如果是這樣,需要做些什麼?
Interface Car
{
void Drive(int miles);
}
class Honda : Car
{
...
}
class Toyota : Car
{
...
}
你打敗了我。我會刪除我的 – 2008-12-29 21:51:51
,應該是接口ICar – foson 2008-12-29 21:54:24
創建一個名爲Cars的類。給它的驅動器方法。在您的本田和豐田課堂上擴展該基礎班級。
您可以通過幾種不同的方法來實現這一點。你可以聲明一個抽象基類,或者你可以有一個你的對象實現的接口。我相信「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
}
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) { ... }
}
}
不要忘了命名空間,也看到了有關變量名
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) {
}
}
}
做一個叫做汽車的抽象類與稱爲驅動抽象方法的問題,我的評論( )。將其子類化並添加實現。
我看到每個人都在向你推送接口/抽象基類的變化。您提供的僞代碼或多或少意味着您已經擁有此代碼。
我會提出別的東西:
你要創建一個「CarFactory」將返回一個具體的實現你的基類/接口。 Create方法可以將測試條件作爲參數,以便創建正確的汽車。
編輯:這裏有一個從MSDN的鏈接 - http://msdn.microsoft.com/en-us/library/ms954600.aspx
編輯:見另一條鏈路的意見。
我希望你不要期望這兩款車都是基於這種奇異的汽車駕駛方式。變種名稱必須與本田和豐田不同 – Bob 2008-12-29 21:55:38
確定我更改了代碼以使其更準確,謝謝。 – Blankman 2008-12-29 22:05:22