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(); } } }