首页 新闻 会员 周边

C# 多态的疑问

0
悬赏园豆:10 [待解决问题]

在下面的语句和我预料的不一样不知道怎么解释

父类 函数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.............");
    }
}
NeedStudy的主页 NeedStudy | 初学一级 | 园豆:194
提问于:2021-02-26 13:40
< >
分享
所有回答(2)
0

没有为什么,设计就是这样的,至于为什么这样设计,你用多了你会觉得这么设计比你想的设计更合理。

即使一摸一样,也是调用的自己的而不是父亲的,调用父亲需要用base.   当然java 好像叫super还是什么

花飘水流兮 | 园豆:13560 (专家六级) | 2021-02-26 14:20
0

首先给题主提个建议,可以把代码放在使用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# 抽象类,虚方法来实现。

智客工坊 | 园豆:1855 (小虾三级) | 2021-02-26 14:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册