小白问个继承的小问题
就是有个父类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){}这样可以。
[解决办法]
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的方法放在那个子类中去