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方法。(本例和教材一致,再次出现的目的是通过反复训练,理解继承的作用)
相关文章推荐
- C# 基础系列--继承二(多态是不是重载)
- C#基础继承和多态详解 1
- 黑马程序员:C#基础篇(四)抽象类、接口、继承与多态
- C#中区别多态、重载、重写的概念和语法结构
- JAVA知识点总结(四)继承,多态,重载与重写
- java(4)继承,重载,多态
- 继承与派生,多继承,函数重载,构造函数调用顺序 静态多态和动态多态
- 继承、重载、覆盖、多态
- java中的继承和多态以及重载和重写
- Python3 与 C# 面向对象之~继承与多态
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- 【Java】Java基础知识1. 继承、多态、重载和重写
- C#中多态、重载、重写区别分析
- 使用继承的多态(C#)
- 继承,多态,重载
- JAVA基础知识点(六)--接口,多态,继承,抽象类,重载的问题
- c#继承与多态使用示例
- 重载和重写、继承和多态的区别
- 第10章 接口、继承与多态----方法的重载
- C#和Java的类、继承、重写与多态