如果我有课:
public blah
{
}
然后我有另一个继承blah的类“
public ablah : blah
{
}
那我可以这样做吗?
public class Someservice
{
public bool SomeBlah(blah b)
{
}
}
我可以将它称为blah或ablah类的服务吗?
即
Someservice s1 = new Somesercie();
s1.SomeBlah(new blah());
s1.SomeBlah(new ablah());
我在某个地方看到了这个,我认为这只有在使用界面时才有可能吗?
答案 0 :(得分:1)
它被称为多态,它可以用于类和接口。
一般来说,如果你想在基类中提供一些实现(在接口声明中是不可能的),你会使用一个类。接口也只允许公共成员..
答案 1 :(得分:1)
是的,虽然它没有使用界面,而是面向对象编程的一个方面,称为多态(http://msdn.microsoft.com/en-us/library/ms173152(VS.80).aspx)
如果你有
public class Someservice{
public bool SomeBlah(ablah b)
{ }
}
你的SomeService代码不起作用,因为虽然你可以将一个ablah对象转换成一个blah对象,但你不能反过来。这就像说我有一辆车(等等),这是一辆丰田(阿布拉)。如果我正在做一些需要汽车的事情,我的丰田汽车将符合要求。但如果我要做一些需要丰田的东西,我就不能使用任何旧车了。
HTH。 PK
答案 2 :(得分:0)
这样可以正常工作。 (假设它会编译......检查你的拼写)
答案 3 :(得分:0)
你可以做得很好。在这种情况下,您正在使用标准继承。想到这一点的最好方法是:“ablah”是一个“blah”,所以你可以在任何预期会出现问题的地方使用“ablah”实例。
一个常见的例子是
public class Animal {}
public class Dog : Animal {}
在这种情况下,“狗”是一种“动物”(你期望的),所以如果你有一种采取动物的方法,它将与狗一起使用。