多态:
有了继承,才有了多态;概念:继承同一个父类的全部子类,使用起来都不一样,他们都是一个独立的个体;普通父类中,可以出现虚方法,虚方法可以在子类中被重写;
虚方法:virtual ,跟在访问修饰符后面使用
重写:override,跟在访问修饰符后面使用父类,基类
子类,派生类,超类注:子类还可以添加子类继承这个子类,比如子类A继承了父类B,还可以再添加一个子类c来继承A,这样C就继承了子类A中的所有
创建一个项目,并添加三个类,一个父类,两个子类
父类:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 面向对象__多态{ class ren { public virtual void rr() //在ren这个类中添加使用方法,添加了虚方法,在子类继承后可以被重写 { Console.WriteLine("我爱吃肉、蔬菜和水果"); } //普通父类中,可以出现虚方法,虚方法可以在子类中被重写; //虚方法:virtual,在上面访问修饰符后面添加这个方法 //重写:override }}
子类1:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 面向对象__多态{ class nan:ren //nan继承了ren这个类, //在父类中有可以被重写的虚方法,在子类中可以进行重写,在访问修饰符后面加override { public override void rr()//作为一个子类,他和其他子类一样继承父类,他也同样有自己的使用方法 //每一个子类都是一个独立的个体 { Console.WriteLine("我是男人,我爱吃肉"); }
//子类中也可以有单独自己的方法 public void sport() { Console.WriteLine("我是男人,我喜欢运动"); }
}}
子类2:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 面向对象__多态{ class nv:ren //nv继承了ren这个类 { //在父类中有可以被重写的虚方法,在子类中可以进行重写,在访问修饰符后面加override public override void rr()//作为一个子类,他和其他子类一样继承父类,他也同样有自己的使用方法 //每一个子类都是一个独立的个体 { Console.WriteLine("我是女人,我爱吃蔬菜和水果"); }
//子类中也可以有单独自己的方法 public void shop() { Console.WriteLine("我是女人,我喜欢购物"); }
} }
Program:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 面向对象__多态{ class Program { static void Main(string[] args) { nan n = new nan();//实例化一下 n.rr();//nan这个类继承了ren这个类,就可以使用里面的信息 //父类中添加了虚方法,表示在子类中可以被重写,现在每个子类中重写了属于自己的属性, //在program中调用子类时就会出现每个自己的属性 n.sport();//属于这个子类中自己的属性 nv v = new nv(); v.rr();//nv这个类同样是ren的子类,也可以使用父类里面的 v.shop();//属于这个子类中自己的属性 Console.ReadLine(); } }}