我有一个父类Zival,我从中创建子类odraslaZival,该子类返回用户定义的一些数字,并在Mladic中我想返回枚举。父类已经具有返回类型,如何将子类的返回类型添加到父类中?
class Zival
{
public Zival(string p, int s, double t, Dnevnik d, Kartoteka k)
{
poreklo = p;
starost = s;
teza = t;
Dnevnik = d;
Kartoteka = k;
this.spol = spol;
}
public string Izpis()
{
return "Ime:"+this.poreklo+" Starost:"+ this.starost + " Teža:" + this.teza+"\n" + this.Dnevnik.Izpis() + this.Kartoteka.Izpis();
}
}
class OdraslaZival : Zival
{
int NumberOfChild;
public OdraslaZival(string p, int s, double t, Dnevnik d, Kartoteka k, Spol spol, int NumberOfChild) : base(p, s, t, d, k)
{
this.NumberOfChild = NumberOfChild;
}
}
class Mladic : Zival
{
enum prehranjevanje { mesojedec, rastlinojedec, vsejedec}
public Mladic(string p, int s, double t, Dnevnik d, Kartoteka k, Spol spol, int prehranjevanje) : base(p, s, t, d, k)
{
}
}
我希望程序返回:“ this.poreklo + this.starost + this.teza + this.Dnevnik.Izpis()+ this.Kartoteka.Izpis()+'sublcas枚举'+'NumberOfChild'” >
答案 0 :(得分:0)
将您的打印方法设为虚拟
public virtual string Izpis()
{
return "Ime:"+this.poreklo+" Starost:"+ this.starost + " Teža:" + this.teza+"\n" +
this.Dnevnik.Izpis() + this.Kartoteka.Izpis();
}
这允许您在子孙类中覆盖它。
class OdraslaZival : Zival
{
int NumberOfChild;
...
public override string Izpis()
{
return base.Izpis() + " Number of children: " + NumberOfChild;
}
}
在Mladic
类中,您可以写作
public override string Izpis()
{
return base.Izpis() + " My enum: " + prehranjevanje;
}
但是您当然不能在类Mladic
中打印类OdraslaZival
的枚举,因为后者只能访问父类及其本身的成员,而不能访问同级类。
答案 1 :(得分:0)
如果我对您的理解正确,那么您正在询问对象继承。子类可以调用base.Method()并将其数据附加到从父类返回的内容上。在C#中,继承是从父级流到子级,而不是子级流向父级。因此,孩子可以访问父母的方法和属性,但是父母不了解他们的孩子。
class Program
{
static void Main(string[] args)
{
var bar = new Bar("Jane Doe", 25);
Console.WriteLine(bar.Speak());
Console.Read();
}
}
public class Foo
{
public string Name { get; set; }
public Foo(string name)
{
Name = name;
}
public virtual string Speak() => $"My Name is {Name}";
}
public class Bar: Foo
{
public int Age { get; set; }
public Bar(string name, int age) : base(name)
{
Age = age;
}
public override string Speak()
{
return $"{base.Speak()} and my age is {Age}";
}
}
返回“我叫Jane Doe,我25岁。”