汉企C#面向对象——继承

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

           

        }

    }

}

 

你可能感兴趣的:(面向对象)