面向对象 多态和静态

三、多态

1.编译多态
函数重载


2.运行多态
概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候表现出的不同就称为多态
条件必须要有继承 父类引用指向子类实例 子类必须对父类的方法进重写

里氏代换原则:如果有一个地方需要使用到父类对象,那么你可以将一个子类对象给他

    class Program
    {
        static void Main(string[] args)
        {
         DongWu dw = new Dog();            
       Dog d
= new Dog(); Console.WriteLine(Ceshi(dw)); Console.WriteLine(CeShi(d)); Console.ReadLine(); } public static string CeShi(DongWu d) { return "ok"; } } class DongWu { public virtual string Eat() //虚方法 { return "该动物在吃饭"; } } class Dog:DongWu { public override string Eat() //重写 { return "狗正在吃骨头"; } } class Cat : DongWu { public override string Eat() { return "猫正在吃鱼"; } }

静态

1.普通成员  普通成员都是属于对象的

                 用对象调用

2.静态成员  静态成员是属于类的

      用类名调用

      stactic 静态关键字

静态方法里面不能包含普通成员
普通方法里面可以包含静态成员

用处:1.为了简便

       连接数据库的时候,造连接对象类,使用静态属性直接返回连接对象。

     2.两个类之间传递信息

     3.不允许创建对象的类(对创建对象的个数有限制)

    class Program
    {
        static void Main(string[] args)
        {
            ZuHe zh = new ZuHe();

            //zh.name="张三"; //调用普通成员
            //ZuHe.zname = "五月天"; //调用静态成员
            ZuHe.Sing();

            Console.WriteLine(zh.Run());
            Console.ReadLine();
        }
    }


    class ZuHe
    {
        public string name="李四"; //普通成员,组合里面某个人的名字

        public static string zname = "李四"; //静态成员,组合名字

        public static string Sing() //静态方法
        {
            return "正在唱歌";
        }

        public string Run() //普通成员
        {
            return zname+"正在奔跑"; 
        }
    }
原文地址:https://www.cnblogs.com/ShenG1/p/5771367.html