完成下面父类和子类的定义:
(1)定义Student类,放入stu包中。
属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。
方法包括构造方法、get方法、set方法、toString方法(返回该类的对象)、equals方法(比较两个对象是否相等,若等返回true,否则返回false)、compare方法(比较两个学生的总成绩,结果分为大于、小于、等于)、sum方法(计算总成绩)、testScore方法(计算评测成绩)。
注:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此在每一个set方法中应调用sum方法计算总成绩。
(2)定义StudentXW类为Student的子类,放入sub包中。
在StudentXW(学习委员)类中增加责任属性,并重写testScore方法(计算测评成绩,测评成绩=三门课的平均分+3)。
(3)定义StudentBZ(班长)类为Student的子类,放入sub包中。
在StudentXW(学习委员)类中增加责任属性,并重写testScore方法(计算测评成绩,测评成绩=三门课的平均分+5)。
(4)定义测试类,生成若干个Student类、StudentXW类及StudentXW类的对象,并分别计算它们的评测成绩。
获得的知识:
1.java中有变量默认值一说,也就是说声明变量的话。引用型默认值为null,如String.值类型默认值为0,如int.静态变量声明时不用赋值。
2.静态变量可以继承的,它会把值跟随着继承到子类中去。
3.若是构造函数中已有参数定义了,那么直接用get函数即可。若是构造函数没有参数,那么需要用set和get来给函数赋值。
4.把共性的东西写在父类中,在子类中声明非共性的变量。注意构造函数的使用。
代码如下:
package
stu;
class Student_usual {
private int no;
private String name;
private float englishScore;
private float mathScore;
private float computerScore;
float sum1;
static int count;
static float sum2;
public Student_usual() {
}
public Student_usual(int no,String name){
this.no=no;
this.name=name;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getEnglishScore() {
return englishScore;
}
public void setEnglishScore(float englishScore)
{
sum1 += englishScore;
this.englishScore = englishScore;
}
public float getMathScore() {
return mathScore;
}
public void setMathScore(float mathScore) {
sum1 += mathScore;
this.mathScore = mathScore;
}
public float getComputerScore() {
return computerScore;
}
public void setComputerScore(float
computerScore) {
sum1 += computerScore;
this.computerScore = computerScore;
}
public String toString() {//输出一个学生的信息
return "学号:" + no + " 姓名:" + name + " 英语:" +
englishScore + " 数学:"
+ mathScore + " 计算机:" + computerScore + " 总成绩:"
+ sum1;
}
public float testScore() {//求一个学生的均分
count++;
sum1/=3;
sum2+=sum1;
return sum1;
}
public float getAverage(){//求多个学生的均分
return sum2/count;
}
}
class StudentXW extends Student_usual {
private String duty;
public StudentXW(int no,String name,String duty)
{
super(no,name);
}
public String getDuty() {
return duty;
}
public float getAverage() {
return super.getAverage() + 3;
}
}
class StudentBZ extends Student_usual {
private String duty;
public StudentBZ(int no,String name,String duty)
{
super(no,name);
}
public String getDuty() {
return duty;
}
public float getAverage() {
return super.getAverage() + 5;
}
}
public class Student {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Student_usual stu1 = new Student_usual();
stu1.setNo(1);
stu1.setName("A");
stu1.setEnglishScore(60);
stu1.setMathScore(65);
stu1.setComputerScore(70);
System.out.println(stu1.toString() + " 均分:" +
stu1.testScore());
Student_usual stu2=new Student_usual();
stu2.setNo(2);
stu2.setName("B");
stu2.setEnglishScore(65);
stu2.setMathScore(70);
stu2.setComputerScore(75);
System.out.println(stu2.toString()+"
均分:"+stu2.testScore());
StudentXW stuxw = new
StudentXW(10,"H","学习委员");
System.out.println("学号:" + stuxw.getNo() + "
姓名:" + stuxw.getName()
+ " 均分:" + stuxw.getAverage());
StudentBZ stubz = new
StudentBZ(20,"Y","班长");
System.out.println("学号:" + stubz.getNo() + "
姓名:" + stubz.getName()
+ " 均分:" + stubz.getAverage());
}
}