public class Shengwu
{
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
protected string Old="1231";
public void shengming()
{
Console.WriteLine("生物都是有生命的");
Console.WriteLine(Old);
}
}
class dongwu:Shengwu
{
private string _dName;
public string DName
{
get { return _dName; }
set { _dName = value; }
}
public void huidong()
{
Console.WriteLine("动物会动");
}
}
class Mammal:dongwu //哺乳动物
{
}
class Plant:Shengwu //植物
{
public void guanghe()
{
Console.WriteLine("光合作用");
}
}
namespace 汉企C面向对象__继承
{
class Program
{
static void Main(string[] args)
{
dongwu data = new dongwu();
data.shengming();
data.Name = "生物名字";
data.DName = "动物名字";
Mammal ma = new Mammal();
ma.huidong();
object odata = data; //所有类型的基类,所有类型都是object的子类
Shengwu sdata = data;//子类可以直接转换为父类,但父类不具备子类的属性和方法。
Console.WriteLine(sdata.Name); //只能点出Name,点不出dName,因为Name是生物本身具有的,而dName是哺乳动物单独具有的属性。
//父类转子类有条件:这个父类的对象必须是由某个子类的对象转换类的,才能转换回去。
dongwu dw = new dongwu();
Shengwu sw = dw;
dongwu ddw = (dongwu)sw;
Console.WriteLine(ddw.Name);
//因为p的本质是生物,所以不能转换为植物。 比如 p的本质是植物(以前是植物,转换为生物后本质仍然是植物),才可以转换为植物。
//Shengwu p = new Shengwu();
//Plant xdata = (Plant)p;
//Console.WriteLine(xdata.Name);
Console.ReadLine();
}
}
}