回 帖 发 新 帖 刷新版面

主题:一个小题目让各位大虾帮下!好让我知道如何做!

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个回复)

沙发

各位大虾教教我做吧!我感觉好难啊!做的出来开始后面就做不出了!晕

板凳

老大 不同类是不能重载的 是不是重写父类方法哦

3 楼

私有变量:年龄  还能在子类修改吗?

4 楼

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 楼

帮你顶一下

我来回复

您尚未登录,请登录后再回复。点此登录或注册