首页 新闻 会员 周边

如何用继承实现一个基类,两个派生类

0
[已解决问题] 解决于 2019-04-23 20:39

定义一个Person类,具有属性:姓名,性别,籍贯,出生年月,具有方法:自我介绍

定义一个Student类继承自Person,新增属性:学号、专业,具有方法:自我介绍

定义一个GraduateStudent继承自Student,新增属性:研究方向,具有方法:自我介绍

为三个类分别添加有参和无参的构造函数
在测试类中创建三个类的对象,并调用其自我介绍方法进行介绍。

问题补充:

我不知道怎样将子类Student和子类GraduateStudent在Main()中实现,还有birthday我编写的是错的。
这是我自己写的代码:
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
GraduateStudent g1 = new GraduateStudent("王丽", "女", "1998-10-48", "18004", "软件技术", "计算机");
g1.PrintPerson();
g1.PrintStudent();
Console.ReadLine();
}
}

//定义一个Person基类      

public class Person
{
    public string name;//姓名
    private string sex;//性别
    private string jiguan;//籍贯
    private DateTime birthday;//出生年月
    //定义属性
    public string Sex
    {
        set { sex = value; }
        get { return sex; }
    }
    public string Jiguan
    {
        set { jiguan = value; }
        get { return jiguan; }
    }
    public DateTime Birthday
    {
        set { birthday = value; }
        get { return birthday; }
    }
    //定义无参实例构造函数
    public Person ()
    {

    }
    //打印person信息
    public void PrintPerson()
    {
        Console.WriteLine("自我介绍:");
    }
}
//定义一个Student类,继承自Person类
public class Student : Person
{
    private string sno;//学号
    private string major;//专业
    //定义属性
    
    public string Sno
    {
       set { sno = value; }
       get { return sno; }
    }
        public string Major
    {
        set { major = value; }
        get { return major; }
    }
    //定义有参实例构造函数
    public Student(string name, string sex, DateTime brithday, string sno, string major)
    {
        this.name = name;
        this.Sex = sex;
        this.Birthday = brithday;
        this.Sno = sno;
        this.Major = major;
    }
    //定义无参实例构造函数
    public Student ()
    {

    }
    //打印学生信息
    public void PrintStudent()
        {
            Console.WriteLine("自我介绍:");
        }
}
//定义派生类GraduateStudent继承Student 
public class GraduateStudent : Student
{
    private string yanjiu;//就业方向
    //定义属性
    public string Yanjiu
    {
        set { yanjiu = value; }
        get { return yanjiu; }
    }
    //无参实例构造函数
    public GraduateStudent ()
    {

    }
    //带参实例构造函数
    public GraduateStudent(string name, string sex, DateTime brithday, string sno, string major, string yanjiu)
    {
        this.name = name;
        this.Sex = sex;
        this.Birthday = brithday;
        this.Sno = sno;
        this.Major = major;
        this.Yanjiu = yanjiu;

    }
    //打印毕业学生信息
    public void PrintGraduateStudent()
   {
       base.PrintPerson();
       Console.WriteLine("姓名:{0}", name);
       Console.WriteLine("性别:{0}", Sex);
       Console.WriteLine("生日:{0}", Birthday);
       Console.WriteLine("学号:{0}", Sno);
       Console.WriteLine("专业:{0}", Major);
       Console.WriteLine("研究方向:{0}", Yanjiu);

      }
}

}

小幂幂的主页 小幂幂 | 菜鸟二级 | 园豆:204
提问于:2019-04-19 08:38

建议把想要问的表达出来,是想让人把代码写好给你,还是哪里不懂。

220✈ 5年前
< >
分享
最佳答案
0

重写override

奖励园豆:5
周周周文阳 | 初学一级 |园豆:10 | 2019-04-19 10:18
其他回答(2)
0

表达得这么好, 直接翻译出来就行了呀

风浪 | 园豆:2996 (老鸟四级) | 2019-04-19 09:38
0

用什么语言呢,中文的话,你写的已经一级棒了

刘下来 | 园豆:919 (小虾三级) | 2019-04-19 10:15
    class Program
    {
        static void Main(string[] args)
        {
            Person student = new Student();
            Person graduateStudent = new Student();
        }
    }

我也不知道你提出问题的目的是什么,让别人知道你要干什么,这样别人才能帮你,我也是自学的,把问题提好了那就解决了一半,你的表述无法判断你的需求是什么

birthday没有写错,是你传值时候没有注意格式转换导致的把,这个可以自行百度

支持(1) 反对(0) 刘下来 | 园豆:919 (小虾三级) | 2019-04-20 09:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册