C# 继承实现父类方法、重写、重载
继承是派生类(子类)去实现(重写<override>、重构<new>)基类(父类)的方法或属性。从而获取在派生类中要实现的功能。
子类调用父类构造方法,在父类中有个实现姓名和年龄的构造方法但是中子类也要实现这样的功能这时子类不用再次去写这个功能只要去调用父类的功能即可。
public class Person { private string _name = null; private int _age = 0; public Person(string name, int age)//父类的构造方法 { this._name = name;//获得参数的值 this._age = age; Console.WriteLine("您的姓名是{0},您的年龄是{1}.", this._name, this._age); } } public class Studnet : Person { private int _id; public Studnet(string name, int age, int IDCard):base(name,age) //子类构造方法继承父类构造方 //把接受到的name、age两个参数交给父类的构造方法去处理 { this._id = IDCard; Console.WriteLine("您的身份证号码为{0}",this._id); } } class Program { static void Main(string[] args)//主函数 { Studnet stu = new Studnet("benshou", 12, 99999); Console.ReadLine(); } }
实现效果
您的姓名是benshou,您的年龄是12.
您的身份证号码为99999
在C#中定义了,子类去调用父类的方法时,会先去执行父类的方法之后再去执行子类的方法
还是以子类继承父类,现在是子类实现父类的重写和重载
重写只是对方法里面的功能实现重新做的了编写,并没有对方法的参数进行添加、改变、删除
重载则是对方法参数的个数、位置、参数类型进行了改变。
重写ShowME方法
public class Person { public virtual void ShowME(string name,string school,string Class) { Console.WriteLine("我在{0}学习",Class); Console.WriteLine("我叫{0}.我毕业与{1}",name,school); } } public class Studnet : Person { public override void ShowME(string name,string school, string Class) //重写了父类的ShowME方法 { Console.WriteLine("姓名{0}\n毕业学校{1}\n曾读班级{2}", name,school,Class); } } } class Program { static void Main(string[] args)//主函数 { Student stu = new Studnet(); stu.ShowME("benshou","浙江金融职业学院","电子商务(7)班"); Console.ReadLine(); } }
实现效果
姓名benshou
毕业学校浙江金融职业学院
曾读班级电子商务(7)班
重写的父类方法时,必须指明被重写的方法是虚方法(virtual关键字)。在子类重写父类方法时必须有重写关键字(override)这样才能重写父类的方法
重载ShowME方法
public class Person { public void ShowME(string name,string school,string Class) { Console.WriteLine("我在{0}学习",Class); Console.WriteLine("我叫{0}.我毕业与{1}",name,school); } } public class Studnet : Person { public new void ShowME(string name) { Console.WriteLine("姓名{0}",name); } } class Program { static void Main(string[] args)//主函数 { Studnet stu = new Studnet(); stu.ShowME("benshou"); Console.ReadLine(); } }
实现效果
姓名benshou
子类重载父类方法,子类必须指定重载的关键字(new),而父类被重载的方法则可以不用指定哪个方法被重载的关键字(virtual)。重载一个方法,是对一个方法重新进行了编写从方法的参数到方法体,唯独方法的名称没有进行改变。重载也可以对原来没有返回类型的方法(void),改变为有返回类型的方法。总体来讲,重载处了方法名不能被改变为另外什么都能重新定义(方法作用域、返回类型、方法体、方法参数)