曾记得从VB开始的时候就听说了“继承”,可是一直不知道在代码中是如何实现的,通过学习C#才了解到它的好处。
基类和派生类
估计通过字面的意思就能够大致了解到这两个区别,举个例子。
教师和学生可以抽象出人这个类来,那么人就是所谓的基类,教师和学生就是人的派生类;当然学生又可以分为男和女的话,那么学生又成为了基类,男和女则成为了派生类。
代码中的实现
那么继承又是如何在代码中实现的呢?通过一个简单的例子来说明一下。
class Program
{
static void Main(string[] args)
{
student objstudent = new student(); //实例化学生类
undergraduate objundergraduate = new undergraduate(); //实例化毕业生类
objstudent .getinfo (); //调用相应的函数来实现相应的功能
// objstudent .displnfo ();
objstudent.displnfo();
objstudent.getmarks ();
objundergraduate.chkegbl();
}
}
public class person //人这个类
{
private string name;
private uint age;
public void getinfo() //得到公共的姓名和年龄
{
Console.WriteLine ("请输入您的姓名和年龄");
name = Console.ReadLine();
//age = uint.Parse(Console.ReadLine());
age = uint.Parse(Console.ReadLine());
}
public void displnfo() //显示相应的名字和年龄
{
Console.WriteLine("尊敬的{0},您的年龄为{1}", name, age);
}
}
public class student:person //学生继承person这个类,关键是:
{
private string school;
private uint eng;
private uint math;
private uint sci;
private uint tol;
public uint getmarks() //得到分数
{
Console.WriteLine("请输入学校的名称");
school = Console.ReadLine();
Console.WriteLine("请分别输入英语、数学和自然科学的成绩");
eng = uint.Parse(Console.ReadLine());
math = uint.Parse(Console.ReadLine());
sci = uint.Parse(Console.ReadLine());
tol = eng + math + sci;
Console.WriteLine("所得总分为:{0}", tol );
return (tol);
}
}
public class undergraduate:student //二层继承,毕业生又继承学生这个类
{
public void chkegbl() //作为合格生的条件
{
Console.WriteLine("要上升一级,要求总分不低于150");
//if(this.getmarks()>149)
//if(this.getmarks ()>149)
if(this.getmarks()>149)
Console.WriteLine("合格");
else
Console.WriteLine ("不合格");
}
}
通过上面这些代码,我们也看到继承其实也是相当的简单,只需要修改一些形式就可以继承父类。
但是有的人就问了,如果我要修改基类里面的方法那么怎么办呢?很简单,只需要在定义基类的时候,加上关键字Virtual,并且在派生类中重新的时候添加override,下面再看一个例子。
原文:http://blog.csdn.net/luckyzhoustar/article/details/19618619