您的位置:首页 > 编程语言 > C#

C# 类的重载继承和多态

2017-10-08 09:23 232 查看
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolManagement
{
public class User
{
private string userName;//用户名
public string Name
{
get { return userName; }
set { userName = value; }
}
private string password;//密码
public string Password
{
get { return password; }
set { password = value; }
}
private string userType;//用户类型
public string UserType
{
get { return userType; }
set { userType = value; }
}
public void Login()
{
if (userName.Equals("1") && password.Equals("1"))
{
DisplayPersonInfo();
}
}
public virtual void DisplayPersonInfo() //注意virtual关键字
{
Console.WriteLine("姓名:{0}", userName);
Console.WriteLine("用户类型:{0}", userType);
}
}
}
2)创建名为Student的派生类,具备班级和成绩两个特殊属性,以及查询成绩的特殊方法,覆盖基类的显示
个人信息方法
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolManagement
{
public class Student : User
{
private string classID;
public string ClassID
{
get { return classID; }
set { classID = value; }
}
private float stuScore;
public float StuScore
{
get { return stuScore; }
set { stuScore = value; }
}
public Student()
{ UserType = "学生";
}
public override void DisplayPersonInfo()
{
base.DisplayPersonInfo();
Console.WriteLine("班级:{0}", classID );
}
public void CheckScore()
{
Console.WriteLine("成绩:{0}", this.stuScore);
}
}
}
3)创建名为Teacher的派生类,具备部门和工资两个特殊属性,以及查询工资的特殊方法,覆盖基类的显示
个人信息方法。
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolManagement
{public class Teacher : User
{ private string department;//部门
public string Department
{get { return department; }
set { department = value; }   }
private float salary;//工资
public float Salary
{get { return salary; }
set { salary = value; }}
public Teacher()
{UserType = "教师";}
public override void DisplayPersonInfo()
{ base.DisplayPersonInfo();
Console.WriteLine("部门:" + this.department);   }
public void checkSalary()
{ Console.WriteLine("工资:" + this.salary);}}}
4)创建名为SysManager的派生类,具备插入学生信息和插入教师信息两个方法
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolManagement
{ public class SysManager : User
{ public SysManager()
{  UserType = "管理员";  }
public Student InsertStudent()
{ Student stu = new Student();
stu.Name = "张郭郭";
stu.UserType = "教师";
stu.ClassID = "310730";
stu.StuScore = 70;
return stu;}
public Teacher InsertTeacher()
{  Teacher teacher = new Teacher();
teacher.Name = "李沙沙";
teacher.Department = "计算机系";
teacher.Salary = 5000;
return teacher;}}}
5)在Program.cs的Main方法中调用以上类,测试效果如下:
using Sys
94cd
tem;
using System.Collections.Generic;
using System.Text;
namespace SchoolManagement
{  class Program
{ static void Main(string[] args)
{//系统管理员登录
SysManager sys = new SysManager();
sys.Name = "1";
sys.Password = "1";
sys.Login();
Console.WriteLine("------------------------------");
//系统管理员录入学生和教师信息
Teacher teacher = sys.InsertTeacher();
Student stu = sys.InsertStudent();
//显示教师信息,查询工资
teacher.DisplayPersonInfo();
teacher.checkSalary();
Console.WriteLine("------------------------------");
//显示学生信息,查询成绩
stu.DisplayPersonInfo();
stu.CheckScore();
Console.WriteLine("------------------------------"); }} }


实验内容与步骤: 1.在学校教务管理系统中,有三种用户,一种是系统管理员,一种是学生,一种是教师,编写C#类实现该

继承关系。系统管理员/学生/教师都有用户名和密码属性,并都有Login和显示自身信息的方法,另外,学

生拥有班级和成绩两个特殊属性以及查询成绩这一方法,教师拥有部门和工资两个特殊属性以及查询工资

这一方法,系统管理员可以添加学生和教师信息。由于教师和学生个人信息不同,所以学生和教师重载基

类的DisplayInfo方法。(本例和教材一致,再次出现的目的是通过反复训练,理解继承的作用)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: