吴一尘 2017-05-02 14:59 采纳率: 80%
浏览 1330
已采纳

我想使用向下造型。虽然结果是正确的但是我被自己的代码弄晕了!!

class Student{
private String name;
private int classA,classB,classC;
public Student(String n,int a,int b,int c){
name=n;
classA=a;
classB=b;
classC=c;
}
public String getName(){
return name;
}
public int getAverage(){
return (classA+classB+classC)/3;
}
}
class UnderGraduate extends Student{
public UnderGraduate(String n,int a,int b,int c){
super(n,a,b,c);
}
public void isPass(Student a1){
if(a1 instanceof UnderGraduate){
UnderGraduate a=(UnderGraduate)a1;
System.out.println(a.getAverage());
}
if(getAverage()>60)
System.out.println("本科生"+getName()+"的三科平均分为:"+getAverage()+
",可以拿到学士学位。");
else
System.out.println("本科生"+getName()+"的三科平均分为:"+getAverage()+
",不能拿到学士学位。");
}
}
class PostGraduate extends Student{
public PostGraduate(String n,int a,int b,int c){
super(n,a,b,c);
}
public void isPass(Student b1){
if(b1 instanceof PostGraduate){
PostGraduate b=(PostGraduate)b1;
System.out.println(b.getAverage());
}
if(getAverage()>80)
System.out.println("研究生"+getName()+"的三科平均分为:"+getAverage()+
",可以拿到硕士学位。");
else
System.out.println("研究生"+getName()+"的三科平均分为:"+getAverage()+
",不可以拿到硕士学位。");
}
}
public class StudentGradeDemo{
public static void main(String[] args){
StudentGradeDemo t=new StudentGradeDemo();
UnderGraduate a2=new UnderGraduate("张三",80,80,80);
PostGraduate b2=new PostGraduate("李四",90,90,90);
a2.isPass(b2);//这里是什么意思我晕了!!
b2.isPass(a2);//这里是什么意思我晕了!!

        }
    }
  • 写回答

2条回答 默认 最新

  • 战在春秋 2017-05-02 21:50
    关注

    对关键行加了注释,看一下应该能理解。

    class Student {
        private String name;
        private int classA, classB, classC;
    
        public Student(String n, int a, int b, int c) {
            name = n;
            classA = a;
            classB = b;
            classC = c;
        }
    
        public String getName() {//子类会继承此函数
            return name;
        }
    
        public int getAverage() {//子类会继承此函数
            return (classA + classB + classC) / 3;
        }
    }
    
    class UnderGraduate extends Student {
        public UnderGraduate(String n, int a, int b, int c) {
            //调用其类的构造函数,并传入参数: "张三", 80, 80, 80
            super(n, a, b, c); 
        }
    
        public void isPass(Student a1) {
            if (a1 instanceof UnderGraduate) { //此条件不满足,if分支不执行
                UnderGraduate a = (UnderGraduate) a1;
                System.out.println(a.getAverage());
            }
            if (getAverage() > 60)
    //由传入的参数: "张三", 80, 80, 80调用基类getAverage、getName函数得到 结果为:
    //本科生张三的三科平均分为:80,可以拿到学士学位。
                System.out.println("本科生" + getName() + "的三科平均分为:" + getAverage() + ",可以拿到学士学位。");
            else
                System.out.println("本科生" + getName() + "的三科平均分为:" + getAverage() + ",不能拿到学士学位。");
        }
    }
    
    class PostGraduate extends Student {
        public PostGraduate(String n, int a, int b, int c) {
            //调用其类的构造函数,并传入参数: "李四", 90, 90, 90
            super(n, a, b, c);
        }
    
        public void isPass(Student b1) {
            if (b1 instanceof PostGraduate) { //此条件不满足,if分支不执行
                PostGraduate b = (PostGraduate) b1;
                System.out.println(b.getAverage());
            }
            if (getAverage() > 80)
                //由传入的参数:"李四", 90, 90, 90调用基类getAverage、getName函数得到 结果为:
                //研究生李四的三科平均分为:90,可以拿到硕士学位。
                System.out.println("研究生" + getName() + "的三科平均分为:" + getAverage() + ",可以拿到硕士学位。");
            else
                System.out.println("研究生" + getName() + "的三科平均分为:" + getAverage() + ",不可以拿到硕士学位。");
        }
    }
    
    public class StudentGradeDemo {
        public static void main(String[] args) {
            StudentGradeDemo t = new StudentGradeDemo();
            UnderGraduate a2 = new UnderGraduate("张三", 80, 80, 80);
            PostGraduate b2 = new PostGraduate("李四", 90, 90, 90);
            a2.isPass(b2);//调用UnderGraduate.isPass函数
            b2.isPass(a2);//调用PostGraduate.isPass函数
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 速帮,学校需要在外上班没空
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义