三、多态
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+"正在奔跑"; } }