设计一个学生类Student,其属性有name(姓名)、age(年龄)和degree(学位)。 由类派生出本科生类Undergraduate和研究生类Graduate

19 篇文章 0 订阅

Java设计一个学生类Student,其属性有name(姓名)、age(年龄)和degree(学位)。 由类派生出本科生类Undergraduate和研究生类Graduate, Undergraduate类增加属specialty(专业),研究生类增加属性direction(研究方向)。 每个类都有show()函数,用于新出属性信息。注意: (1)所有的输人均为英文,不含中文。(2)编写测试类Test进行测三分别声 明两个类的对象,并调用show()函数。

package pack2;//p93 7 
class Student1{
    private String name;
    private int age;
    private String degree;
    public Student1(String name, int age, String degree) {
        super();//Java的规定:子类继承父类,子类的构造方法必须调用
                //super()即父类的构造方法,而且必须放在构造方法的第一行
        this.name = name;
        this.age = age;
        this.degree = degree;
    }
    public Student1() {
        super();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getDegree() {
        return degree;
    }
    public void setDegree(String degree) {
        this.degree = degree;
    }
    public void show(){
        System.out.println("姓名:" + this.getName() + " 年龄:" + this.getAge() + " 学位:" + this.getDegree() );
    }
}
 
class Undergraduate extends Student1{ //本科类
    private String specialty;//专业
    public String getSpecialty() {
        return specialty;
    }
    public void setSpecialty(String specialty) {
        this.specialty = specialty;
    }
    public Undergraduate(String name, int age, String degree, String specialty) {
        super(name, age, degree);
        this.specialty = specialty;
    }
     
    public void show(){
        System.out.println("姓名:" + this.getName() + "  年龄:" + this.getAge() + "  学位:" + this.getDegree() + "  专业:" + this.getSpecialty());
    }
}
 
class Graduate extends Student1{ //研究生类
    private String direction;
    public String getDirection() {
        return direction;
    }
    public void setDirection(String direction) {
        this.direction = direction;
    }
    public Graduate(String name, int age, String degree, String direction) {
        super(name, age, degree);
        this.direction = direction;
    }

    public void show(){
        System.out.println("姓名:" + this.getName() + "  年龄:" + this.getAge() + "  学位:" + this.getDegree() + "  研究方向:" + this.getDirection());
    }
}

public class student {
    public static void main(String[] args) {
        Undergraduate stu1=new Undergraduate("吴飞",21,"本科","网络工程");
        Graduate stu2=new Graduate("吴优秀",24,"硕士","软件工程");
        stu1.show();
        stu2.show();
    	
    }
}

在这里插入图片描述

好的,这是一个关于日期、人员学生类的实验题目。下面是具体的实现过程: 首先,我们需要构造日期。代码如下: ```python class Date: def __init__(self, year, month, day): self.__year = year self.__month = month self.__day = day def get_year(self): return self.__year def get_month(self): return self.__month def get_day(self): return self.__day def set_year(self, year): self.__year = year def set_month(self, month): self.__month = month def set_day(self, day): self.__day = day def __str__(self): return str(self.__year) + '年' + str(self.__month) + '月' + str(self.__day) + '日' ``` 上述代码中,我们定义了 Date ,并且包含了年、月、日等私有属性。构造函数 __init__() 用于初始化这些私有属性,get_year()、get_month()、get_day()、set_year()、set_month() 和 set_day() 等公有函数用于操作这些私有属性。__str__() 函数用于将该对象转换成字符串的转换函数,可以通过强制型转换成 string 。 接下来,我们需要构造人员。代码如下: ```python class Person: def __init__(self, name, birthdate): self.__name = name self.__birthdate = birthdate def get_name(self): return self.__name def get_birthdate(self): return self.__birthdate def set_name(self, name): self.__name = name def set_birthdate(self, birthdate): self.__birthdate = birthdate ``` 上述代码中,我们定义了 Person ,并且包含了姓名生日期等私有属性。构造函数 __init__() 用于初始化这些私有属性,get_name()、get_birthdate()、set_name() 和 set_birthdate() 等公有函数用于操作这些私有属性。 最后,我们需要构造学生类。代码如下: ```python class Student(Person): def __init__(self, name, birthdate, student_id, major): super().__init__(name, birthdate) self.__student_id = student_id self.__major = major def get_student_id(self): return self.__student_id def get_major(self): return self.__major def set_student_id(self, student_id): self.__student_id = student_id def set_major(self, major): self.__major = major ``` 上述代码中,我们定义了 Student ,并且从 Person 派生而来。除了继承 Person 中的姓名生日期等私有属性外,还包括了学号和专业私有属性。构造函数 __init__() 中,我们使用 super() 函数调用父的构造函数,从而初始化 Person 中的私有属性。get_student_id()、get_major()、set_student_id() 和 set_major() 等公有函数用于操作学号和专业私有属性。 至此,日期、人员学生类的实现就完成了。我们可以通过以下代码进行测试: ```python if __name__ == '__main__': date = Date(2019, 3, 26) print(str(date)) person = Person('张三', date) print(person.get_name()) print(str(person.get_birthdate())) student = Student('李四', date, '001', '计算机科学') print(student.get_name()) print(str(student.get_birthdate())) print(student.get_student_id()) print(student.get_major()) ``` 上述代码中,我们首先创建了一个 Date 的对象 date,并且将其转换成字符串。然后,我们创建了一个 Person 的对象 person,并且获取了其姓名生日期等私有属性。最后,我们创建了一个 Student 的对象 student,获取了其姓名生日期、学号和专业等私有属性。运行以上代码,将得到如下输结果: ``` 2019年3月26日 张三 2019年3月26日 李四 2019年3月26日 001 计算机科学 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值