- 爱易网页
-
C#教程
- 在C#中子类显示调用父类中的构造函数有什么作用?解决方案
日期:2014-05-18 浏览次数:21101 次
在C#中子类显示调用父类中的构造函数有什么作用?
在C#中子类显示调用父类中的构造函数有什么作用?(有代码参考)一下是我写了一个子类调用父类构造函数的代码,我一直想不明白,子类调用父类中的构造函数有什么有用?既然子类已经继承了父类 那么在调用父类中的构造函数对父类进行初始化有什么意义啊?-----------》纠结中??(没分了!大家多担待啊!谢谢大家了啊!!)
这是一个父类
using System;
using System.Collections.Generic;
using System.Text;
namespace Person
{
/// <summary>
/// 父类
/// </summary>
class Person
{
/// <summary>
/// 工号
/// </summary>
public int ID { set; get; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public string Gender {get;set;}
/// <summary>
/// 父类中的构造函数
/// </summary>
/// <param name="id">工号</param>
/// <param name="naem">姓名</param>
/// <param name="gender">性别</param>
public Person(int id,string name,string gender)
{
this.ID = id;
this.Name = name;
this.Gender = gender;
Console.WriteLine("调用了父类中的有参构造函数");
}
}
}
这是一个子类
using System;
using System.Collections.Generic;
using System.Text;
namespace Person
{
/// <summary>
/// 子类
/// </summary>
class Student:Person
{
/// <summary>
/// 人气值
/// </summary>
public int RenQi { get; set; }
/// <summary>
/// 只是子类中的构造函数
/// </summary>
/// <param name="id">工号</param>
/// <param name="name">姓名</param>
/// <param name="gender">性别</param>
/// <param name="renQi">人气值</param>
public Student(int id, string name,string gender,int renQi):base(id,name,gender)
{
this.ID = id;
this.Name = name;
this.Gender =gender;
this.RenQi = renQi;
}
/// <summary>
/// 调用子类中的方法显示信息
/// </summary>
public void ShowInfo()
{
Console.WriteLine("大家好!我是:{0},我的工号:{1},性别:"
+"{2},我的人气值:{3}",base.Name,base.ID,base.Gender,this.RenQi);
}
}
}
这是Main方法
using System;
using System.Collections.Generic;
using System.Text;
namespace Person
{
class Program
{
static void Main(string[] args)
{
//实例化Student类
Student stu = new Student(123, "小小", "男", 232);
//调用Student类中的方法显示信息
stu.ShowInfo();
}
}
}
------解决方案--------------------
你写的方法等于是白白显式调用了父类构造函数。
正确的应该是:
public Student(int id, string name,string gender,int renQi):base(id,name,gender)
{
this.RenQi = renQi;
}
可以充分重用父类构造函数逻辑。