演示类的继承性
using System;
public class Person //这是一个基类
{
//定义数据成员
public string Name; //姓名
public char Sex; //性别
//定义构造函数,以初始化字段
public Person(string name, char sex)
{
Name = name;
Sex = sex;
}
//定义方法成员
public string Answer()
{
return string.Format("姓名:{0},性别:{1}。", Name, Sex);
}
}
public class Student : Person //这是一个派生类
{
//扩展数据成员
public string School; //学校
private int Score; //成绩
//定义构造函数,自动调用基类的构造函数辅助完成字段的初始化
public Student(string name, char sex, string school, int score)
: base(name, sex)
{
School = school;
Score = score;
}
//扩展方法成员
public float Examine() //返回考试成绩
{
return Score;
}
}
class TestClass
{
static void Main()
{
//创建Student对象
Student s = new Student("张伟", '男', "电子科大成都学院", 480);
Console.WriteLine("该生信息如下:");
Console.WriteLine(s.Answer()); //调用对象继承来的方法
Console.WriteLine("学校:{0},考试成绩:{1}", s.School, s.Examine());
}
}
使用new关键字重新定义类的成员
例如
public class Person //这是一个基类
{
//定义数据成员
public string id; //工作证号
public string Name; //姓名
//定义方法成员
public string Answer()
{
return string.Format(“工作证号:{0},姓名:{1}。", id,Name);
}
}
public class Student : Person //这是一个派生类
{
//重新定义方法成员
public new string Answer()
{
return string.Format (“学号:{0},姓名:{1}。", id,Name);
}
}
用virtual和override关键字定义类成员
例如
public class Person //这是一个基类
{
//定义数据成员
public string id; //工作证号
public string Name; //姓名
//定义虚拟方法成员
public virtual string Answer()
{
return string.Format(“工作证号:{0},姓名:{1}。", id,Name);
}
}
public class Student : Person //这是一个派生类
{
//覆盖方法成员
public override string Answer()
{
return string.Format (“学号:{0},姓名:{1}。", id,Name);
}
}
其中,派生类Student的Answer方法完全覆盖了基类的Answer方法。
演示类的多态性
using System;
public class Person //这是一个基类
{
//定义数据成员
public string Name; //姓名
public char Sex; //性别
//定义构造函数,以初始化字段
public Person(string name, char sex)
{
Name = name;
Sex = sex;
}
//声明虚拟方法成员
public virtual string Answer()
{
return string.Format("姓名:{0},性别:{1}。", Name, Sex);
}
}
public class Student : Person //这是一个派生类
{
//扩展数据成员
public string School; //学校
public int Score; //成绩
//定义构造函数,自动调用基类的构造函数辅助完成字段的初始化
public Student(string name, char sex, string school, int score)
: base(name, sex)
{
School = school;
Score = score;
}
//覆盖基类的方法成员
public override string Answer()
{
return string.Format("姓名:{0},性别:{1}\n学校:{2},成绩:{3}分。",
Name, Sex,School,Score);
}
}
public class Worker: Person //这是一个派生类
{
//扩展数据成员
public string Department; //部门
public float Salary; //薪水
//定义构造函数,自动调用基类的构造函数辅助完成字段的初始化
public Worker(string name, char sex, string depart, float salary)
: base(name, sex)
{
Department = depart;
Salary = salary;
}
//覆盖基类的方法成员
public override string Answer()
{
return string.Format("姓名:{0},性别:{1}\n部门:{2},薪水:{3}元。",
Name, Sex, Department, Salary);
}
}
class TestClass
{
static void Main()
{
//创建学生对象
Student s = new Student("张伟", '男', "电子科大成都学院", 480);
Console.WriteLine("该学生信息如下:");
Console.WriteLine(s.Answer());
//创建员工对象
Worker w = new Worker("王刚", '男', "生产车间", 1500);
Console.WriteLine("该员工信息如下:");
Console.WriteLine(w.Answer());
}
}
输出结果:
该学生信息如下:
姓名:张伟,性别:男
学校:电子科大成都学院,考试成绩:480分。
该员工信息如下:
姓名:王刚,性别:男
部门:生产车间,薪水:1500元。