在下面的语句和我预料的不一样不知道怎么解释
父类 函数doSomething传入参数范围较小,子类传入参数较大,子类与父类函数传入参数不一样,我这里看作时子类的函数是对父类的扩充(重载)(不知道对不对),为什么调用的不是父类而是子类函数,int类型t不是和父类的函数更接近么
class Program
{
static void Main(string[] args)
{
son f = new son();
int IntValue = 1;
f.doSomething(IntValue );
Console.ReadKey();
}
}
public class father {
public void doSomething(int intValue )
{
Console.WriteLine("Father.............");
}
}
public class son:father
{
public void doSomething(object obj)
{
Console.WriteLine("Son.............");
}
}
没有为什么,设计就是这样的,至于为什么这样设计,你用多了你会觉得这么设计比你想的设计更合理。
即使一摸一样,也是调用的自己的而不是父亲的,调用父亲需要用base. 当然java 好像叫super还是什么
首先给题主提个建议,可以把代码放在使用Markdwon,方便大家看。
再说问题,优先都是调用子类的方法,父类的方法要显性调用
base.doSomething(intValue);
public class Son : Father
{
public void doSomething(object obj)
{
Console.WriteLine("Son.............");
}
public void doSomething(int intValue)
{
base.doSomething(intValue);
}
}
多态的实现方式,可以推荐使用C# 抽象类,虚方法来实现。