
法I:
//定义学生类,有姓名、英语成绩、数学成绩、物理成绩四个属性及其方法
class Student{
private String name; //设置名字
private int english; //英语成绩
private int math; //数学成绩
private int physics; //物理成绩
Student(){}; //默认构造函数
Student(String name,int english,int math,int physics){ //构造函数,初始化四个属性
setName(name);
setEnglish(english);
setMath(math);
setPhysics(physics);
}
//setter方法
public void setName(String name) { this.name = name; }
public void setEnglish(int english) { this.english = english; }
public void setMath(int math) { this.math = math; }
public void setPhysics(int physics) { this.physics = physics; }
//getter方法
public String getName() { return name; }
public int getEnglish() { return english; }
public int getMath() { return math; }
public int getPhysics() { return physics; }
//获取对象总分的方法
public int sum(){
return this.english+this.math+this.physics;
}
}
//测试类
public class Task1_1 {
public static void main(String[] args ){
Student DingYi = new Student("丁一",62,64,94); //生成对象,下同
Student LiuEr = new Student("刘二",46,97,27);
Student ZhangSan= new Student("张三",91,81,65);
Student LiSi = new Student("李四",73,75,51);
Student WangWu = new Student("王五",29,90,88);
//max嵌套比较求总分最大值对象
Student Max=max( DingYi , max( LiuEr , max ( ZhangSan , max( LiSi , WangWu))));
//输出最高分对象
System.out.println("总分最高的是" + Max.getName() +",\n英语成绩:"+Max.getEnglish()+"分\n数学成绩:"
+Max.getMath()+"分\n物理成绩:"+Max.getPhysics()+"分\n他(她)的总分是" + Max.sum() + "分。");
}
//max()方法,返回最大值对象
public static Student max(Student a,Student b){
return a.sum()>b.sum()? a : b;
}
}
总结:
1,、sum()方法用对象属性进行比较,返回对象本身(Student),而不是直接比较对象属性(sum),否则返回对象属性时还要再次判断返回的谁的属性。
2、
max使用时嵌套调用,免去了循环比较,但扩展性不好。
3、return是可以通过三目比较运算符实现,简化代码。
4、缺点:类的属性构成不太合理。
法II:
//分数类
class score{
private int English; //英语
private int Math; //数学
private int Physics; //物理
//setter方法
public void setEnglish(int english) { English = english; }
public void setMath(int math) { Math = math; }
public void setPhysics(int physics) { Physics = physics; }
//getter方法
public int getEnglish() { return English; }
public int getMath() { return Math; }
public int getPhysics() { return Physics; }
}
//学生类
class Student extends score{
private String name; //姓名属性
Student(String name){this.name=name;} //构造方法
Student(String name,int English,int Math,int Physics){ //构造方法
this(name);
super.setEnglish(English);
super.setMath(Math);
super.setPhysics(Physics);
}
public void setName(String name) { this.name = name; } //setter
public String getName() { return name; } //getter
public int sum(){ //求得总分的方法
return super.getEnglish()+super.getMath()+super.getPhysics();
}
}
//测试类
public class Task1_2 {
public static void main(String[] args ){
Student DingYi = new Student("丁一",62,64,94); //生成对象,下同
Student LiuEr = new Student("刘二",46,97,27);
Student ZhangSan= new Student("张三",91,81,65);
Student LiSi = new Student("李四",73,75,51);
Student WangWu = new Student("王五",29,90,88);
//max嵌套比较求总分最大值对象
Student Max=max( DingYi , max( LiuEr , max ( ZhangSan , max( LiSi , WangWu))));
//输出最高分对象
System.out.println("总分最高的是" + Max.getName() +",\n英语成绩:"+Max.getEnglish()+"分\n数学成绩:"
+Max.getMath()+"分\n物理成绩:"+Max.getPhysics()+"分\n他(她)的总分是" + Max.sum() + "分。");
}
//max()方法,返回最大值对象
public static Student max(Student a,Student b){
return a.sum()>b.sum()? a : b;
}
}
总结:
1.通过继承实现。