基类
public abstract class Animal
{
protected string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Animal()
{
name = "The animal with no name.";
}
public Animal(string newName)
{
name = newName;
}
public void Feed()
{
Console.WriteLine("{0}has been feeded",name);
}
}
派生类
public class Cow:Animal
{
public void Milk()
{
Console.WriteLine("{0}has been milked", name);
}
public Cow(string newName):base(newName)
{
//这里不需要写name=newName,就可以初始化Cow类吗?
}
}
public abstract class Animal
{
protected string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Animal()
{
name = "The animal with no name.";
}
public Animal(string newName)
{
name = newName;
}
public void Feed()
{
Console.WriteLine("{0}has been feeded",name);
}
}
派生类
public class Cow:Animal
{
public void Milk()
{
Console.WriteLine("{0}has been milked", name);
}
public Cow(string newName):base(newName)
{
//这里不需要写name=newName,就可以初始化Cow类吗?
}
}
不需要,因为你已经调用了基类的构造函数,且基类构造函数已经对name进行了赋值
派生类中可以指定调用基类的某个构造函数,使用base关键字
{
public father()
{
Console.WriteLine("father!");
}
protected father(int x){}
} class child: father
{
public child() : base(0)
{
}
static void Main()
{
new child();
}
}
这里你指定了调用父类的 有参构造函数,所以已经赋值完了。