2009-08-05 46 views
0

如果我有一个类:方法的参数可以是一个类或接口,小糊涂

public blah 
{ 

} 

然后,我有另外一个类继承嗒嗒”

public ablah : blah 
{ 

} 

我能做到这一点,然后

public class Someservice 
{ 
public bool SomeBlah(blah b) 
{ 

} 
} 

我可以称之为服务与任何类别等值线或ablah?

即。

Someservice s1 = new Somesercie(); 

s1.SomeBlah(new blah()); 

s1.SomeBlah(new ablah()); 

我看到这个地方,我认为这是唯一可能的,如果一个使用接口?

+0

这个问题本来可以通过几个关键笔划来回答。有没有人同意它应该被关闭? – 2009-08-05 00:43:20

回答

0

这将工作得很好。 (假设它会编译...检查拼写)

1

它被称为多态,它可以用于类和接口。

如果你想提供基类的一些实现(这在接口声明中是不可能的),通常你会使用一个类。此外接口只允许公众成员..

0

你可以做到这一点很好。在这种情况下,您正在使用标准继承。最好的想法是这样的:“ablah”是一个“blah”,所以你可以在任何需要blah的地方使用“ablah”实例。

一个常见的例子是

public class Animal {} 
public class Dog : Animal {} 

在这种情况下,“狗”是一种“动物”(你会期望),所以如果你有接受一个动物的方法,它会工作与一只狗。

1

是的,虽然它不使用一个接口,而是称为多态性(http://msdn.microsoft.com/en-us/library/ms173152(VS.80).aspx

面向对象编程的一个方面如果你有

public class Someservice{ 
    public bool SomeBlah(ablah b) 
    { } 
} 

你SomeService代码是行不通的,因为当你可以将一个ablah对象转换成一个blah对象,你不能做相反的事情。这就像说我有一辆汽车(blah),它是一辆丰田(ablah)。如果我正在做一些需要汽车的东西,我的丰田汽车将满足这一要求。但如果我要做一些需要丰田的东西,我就不能使用任何旧车。

HTH。 pk

相关问题