主题:一个小题目让各位大虾帮下!好让我知道如何做!
zhuzhu9077
[专家分:0] 发布于 2009-09-21 11:42:00
1、编写一个描述人类的类Person,包括共有变量:姓名(字符型),工作性质(字符型)和私有变量:年龄(整型),;包括共有行为:int GetAge()和void SetAge(int age);
2、分别编写两个新类(MiddleSchoolStudent和Worker),都继承于Person,重载其void SetAge(int age)方法,并分别设置MiddleSchoolStudent的年龄不能大于30岁,
Worker的年龄不能小于18岁,违反这两个条件时,分别给出错误信息。
3、创建一个WinForm窗体,添加两个文本框和两个按钮,两个文本框分别用来输入MiddleSchoolStudent和Worker的年龄,两个按钮分别用来设置这两个类的年龄。
4、运行程序,在两个文本框中分别输入不同的年龄并点击相应的按钮,验证程序的正确性。
回复列表 (共5个回复)
沙发
zhuzhu9077 [专家分:0] 发布于 2009-09-21 23:00:00
各位大虾教教我做吧!我感觉好难啊!做的出来开始后面就做不出了!晕
板凳
leyson306 [专家分:320] 发布于 2009-09-30 20:14:00
老大 不同类是不能重载的 是不是重写父类方法哦
3 楼
leyson306 [专家分:320] 发布于 2009-09-30 20:22:00
私有变量:年龄 还能在子类修改吗?
4 楼
leyson306 [专家分:320] 发布于 2009-09-30 20:51:00
public class Person
{
public string name = "";
public string job = "";
private int age = -1;
public virtual int GetAge() { return this.age; }
public virtual void SetAge(int Age) { this.age = Age; }
}
public class MiddleSchoolStudent : Person
{
public override void SetAge(int Age)
{
if (Age >= 30)
{
Age = -1;
}
base.SetAge(Age);
}
}
public class Worker : Person
{
public override void SetAge(int Age)
{
if (Age <= 18)
{
Age = -1;
}
base.SetAge(Age);
}
}
//窗口
public Form1()
{
InitializeComponent();
}
public Worker work = new Worker();
public MiddleSchoolStudent mss = new MiddleSchoolStudent();
private void Form1_Load(object sender, EventArgs e)
{
}
private void button_MiddleSchool_Click(object sender, EventArgs e)
{
int age = Convert.ToInt32(textBox_MiddleSchool.Text);
mss.SetAge(age);
if (mss.GetAge() == -1)
{
MessageBox.Show("中学生年龄输入错误,不能大于30岁");
}
else
{
MessageBox.Show("你输入的年龄为" + mss.GetAge().ToString());
}
}
private void button_Worker_Click(object sender, EventArgs e)
{
int age = Convert.ToInt32(textBox_Worker.Text);
work.SetAge(age);
if (work.GetAge() == -1)
{
MessageBox.Show("中学生年龄输入错误,不能小于18岁");
}
else
{
MessageBox.Show("你输入的年龄为" + work.GetAge().ToString());
}
}
5 楼
lisypro [专家分:240] 发布于 2009-11-03 14:53:00
帮你顶一下
我来回复