永发信息网

C#子类用了父类的属性后,父类就不能用自己的属性。

答案:5  悬赏:50  手机版
解决时间 2021-03-25 15:56
C#子类用了父类的属性后,父类就不能用自己的属性。
最佳答案
由于子类是继承自父类,当实例化子类时,父类也会在子类中实例化,但父类的构造函数是
public fu(string n)
{
name = n;
}
而子类中并没有实现父类的构造函数,所以会报错,正确的方法是在子类构造函数中同时实现父类构造函数:
public zi(string n, string x):base(n)
{
name = n;
xueyuan = x;
}
全部回答
会有什么错呢。。。
//public fu(string n)
//{
// name = n;
//}
父类 的构造函数 不能注释掉
fu x1 = new fu( "是啊");
x1.MYxinxi();
这样才行啊
class Program
{
static void Main(string[] args)
{
zi d1 = new zi("Tom", "技术学院");
d1.Myxinxi();
Console.Read();
}
}
class fu
{
public string name;
public void MYxinxi()
{
Console.WriteLine(name);
}
public fu(string n)
{
name = n;
}
}
class zi : fu
{
string xueyuan;
public void Myxinxi()
{
Console.WriteLine("我叫{0}我读{1}", name, xueyuan);
}
public zi(string n, string x)
: base(n)
{
xueyuan = x;
}
}
前面的回答已经很明白了,这是由于子类继承父类时,子类实例化的时候,要先调用父类的构造函数先将父亲先实例化。你子类的构造函数当中,没有显示调用父类的构造函数,此时编译器会默认的调用父类的无参构造函数,但你在父类当中,已经定义了包含一个参数的构造函数,那么编译器就不会自动生成一个无参构造函数让你调用,这时就要出错了。
改动方法:
1、前面已经说了,显示调用父类的构造函数
public zi(string n, string x):base(n)
{
name = n;
xueyuan = x;
}
2、在父类当中增加一个无参构造函数
public fu()
{
name = "自动";
}
这个问题涉及到的知识点:
A、类在实例化时,如果不存在构造函数,编译器为会其默认生成一个无参的构造函数,但只要声明的构造函数,那么编译器就不会自动再生成无参构造函数了。
B、子类实例化时,要先实例化父类
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
食用碘盐加热炒过之后其中含的碘会挥发吗?
3/2u+4/3v=2/1 5/4u+6/5
智商160和智商278分别是什么概念?
茂名特产是什么?
如何分辨真假老虎牙
诺婕品牌折扣女装地址在什么地方,想过去办事
著和编有什么区别?为什么大学课本有的是xxx
芝麻开花节节高,荷花结子心连心,三把钥匙挂胸
有投过JournalofPolymerMaterials的吗
笔记本麦本本简麦2 独显hd7450+hd核显 配i3处
考研体育人文社会学的问题
SAP中批次是个什么概念
表示匆忙的词语
傻和笨的区别
请问这个是监控吗:
推荐资讯
沈阳什么地方好玩啊而且花钱还不多
醉玲珑里女主真的是风家的孩子吗
如图所示,已知直线EF和AB,CD分别相交于K,H,
一筐苹果重53千克,卖掉苹果的一半后,连筐重
单选题在工业革命前,促使英国农业劳动力转向
绥棱黑陶,这个能值多少钱
豆苗清汤的做法,豆苗清汤怎么做好吃,豆苗清
如何上传图片到班级相册
小鸟死了不能埋吗?为什么?谢谢
扬州哈量工具有限公司地址在哪,我要去那里办
萨魔幼犬我味玉米面加狗粮行吗
绒这个字右边的部手能组成什么字再组词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?