小白问个继承的小问题
就是有个父类CLASS A,有属性path 和 name,
完了有子类B 和C 都要继承A这两个属性,还有自己其他的属性
但是父类的name 是可以从path处理的,
就是
Class a
{
protected info(string path)
{
this.path = path;
this.name = Getname(path);
}
}
然后在B类继承的时候,可不可以直接也只是传入path,就继承A的name属性呢?
这个应该怎么写啊?另外,A类的属性怎么定义呢?需要定义成抽象类么?
------解决方案--------------------Getname在父类是公开的话
子类一样的用
------解决方案--------------------你写的都是啥啊
------解决方案--------------------然后在B类继承的时候,可不可以直接也只是传入path,就继承A的name属性呢?
可以:子类通用父类构造器来构造
这个应该怎么写啊?另外,A类的属性怎么定义呢?需要定义成抽象类么?
直接子类的初始化函数后加构造器来完成
A类的属性自己定义,不需要定义为抽象的。
------解决方案--------------------没怎么看明白什么意思,好像你的意思是说,子类继承父类方法处理之后的属性值
public class a
{
protected virtual info(string path)
{
this.path = path;
this.name = Getname(path);
}
}
public class b:a{
protected override info(string path)
{
base.info(path);//这里是调用的父类的方法
}
}
------解决方案--------------------子类继承了父类的除private方法和属性。
------解决方案--------------------public setinfo(string a,string b):base(a){}这样可以。
------解决方案--------------------C# code
abstract class A
{
protected virtual void Info(string path)
{
this.Path = path;
this.Name = path + "11111";
}
protected string Path { get; set; }
protected string Name { get; set; }
}
class B:A
{
internal void ShowName()
{
this.Info("abc");
Console.WriteLine(this.Name);
}
}
------解决方案--------------------
你的意思是重载么?
------解决方案--------------------
真不是很懂,貌似你可以用super的方法放在那个子类中去