using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { class Program { static void Main(string[] args) { Console.WriteLine("====男人===="); Nan n = new Nan(); n.chifan(); n.xihuanchi(); n.zuqiu(); Console.WriteLine(); Console.WriteLine("====女人===="); Nv v = new Nv(); v.chifan(); v.xihuanchi(); v.gouwu(); Console.WriteLine(); Console.WriteLine("====小男孩===="); XiaoNanHai x = new XiaoNanHai(); x.chifan(); Console.ReadKey(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { class Ren { public void chifan() { Console.WriteLine("我必须得吃饭!"); } public virtual void xihuanchi() { Console.WriteLine("喜欢吃肉,蔬菜,水果!"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { class Nv : Ren { public override void xihuanchi() { Console.WriteLine("我是女人,我只喜欢吃蔬菜和水果!"); } public void gouwu() { Console.WriteLine("我喜欢购物!"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { class Nan : Ren { public override void xihuanchi() { Console.WriteLine("我是男人,我只喜欢吃肉!"); } public void zuqiu() { Console.WriteLine("我喜欢足球!"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { class XiaoNanHai : Nan { } }
多态:
有了继承,才有了多态;
概念:继承同一个父类的全部子类,使用起来都不一样,他们都是一个独立的个体;
普通父类中,可以出现虚方法,虚方法可以在子类中被重写;
虚方法:virtual
重写:override
父类,基类
子类,派生类,超类