假设学生的属性包括学号(int类型)、姓名(String类型)、...
假设学生的属性包括学号(int类型)、姓名(String类型)、数学成绩(double类型)和计算机成绩(double类型),要求: (1)声明学生类Student,其中包括上述要求的成员变量和构造方法,还要有一个void print()方法,功能是输出成员变量(4个成员变量)的信息。 (2)声明学生类Student的子类,也就是研究生类PostGraduate,其中,研究生类继承了父类的学号、姓名、数学成绩和计算机成绩,此外,研究生类还有自己的两个新属性导师姓名(String类型)和研究方向(String类型)。还有,研究生类要重写父类的void print()方法,功能是输出成员变量(6个成员变量)的信息。(想一想研究生的构造方法怎么写,提示,从父类继承的成员变量可以在子类的构造方法中使用super关键字。) (3)声明主类,在主方法main中,创建一个Student类的对象,从键盘上输入其属性信息,并且通过其print方法输出这些信息;创建一个PostGraduate类的对象,从键盘上输入其属性信息,并且通过其print方法输出这些信息。 以上要求的内容可以放在同一个源程序中,也可以放在不同的源程序中(放在不同的源程序的情况需要注意包的声明和引用)。 同学们做这次作业的时候,在声明类的时候,需要按照以下说明的规则来做: (1)在声明类的时候,如果类中有成员变量,一般不建议创建了类对象之后,通过运算符“.”去调用成员变量,最好是通过函数间接地使用成员变量。(当然,咱们的讲课视频中为了举例简单,还是用了运算符“.”去调用成员变量。) (2)所以,对于每一个成员变量,最好都为其设置两个方法,一个是set方法,功能是通过这个方法修改成员变量的值,另一个是get方法,功能是通过这个方法获取成员变量的值。 (3)例如,以下有类A的声明,它有两个int类型的成员变量x和y,则类A的声明如下,注意观察,对于每一个成员变量的set和get方法,以及它们的参数类型和方法的返回类型,还有print方法中,输出成员变量的值时,也是通过函数获取值: class A { int x,y; A(int x,int y) { this.x=x; this.y=y; } void setX(int a) { x=a; } int getX() { return x; } void setY(int b) { y=b; } int getY() { return y; } void print() { System.out.println("x的值为"+this.getX()+"y的值为"+this.getY()); } }