【问题标题】:Common Errors on my Program(Polymorphism/Override/Inheritance)我的程序中的常见错误(多态/覆盖/继承)
【发布时间】:2015-02-08 17:47:10
【问题描述】:

您好,我知道您可以在这里轻松找到错误,我需要帮助来解决此问题 我很累发现我的代码有什么问题,我正在尝试修复它,但是当我尝试更改某些内容时它变得复杂

这是我目前的代码:

 package copro;

public class QuizInherit {
    public static void main(String[] args){

        students persons[] = new students[3];
        persons[0] = new students("Vincent","Dimalanta",90,85,80);
        persons[1] = new students("Daryl", "De Guzman", 95, 92, 91);
        persons[2] = new students("Jayson", "Elizaga", 88, 87, 86);

        for (students person : persons) {
            person.print();
        }
    }

    public class students extends Calculations {

        private String firstname;
        private String lastname;

        public students(String firstname, String lastname, int Grade1,
                int Grade2, int Grade3) {
            super(Grade1, Grade2, Grade3);
            this.firstname = firstname;
            this.lastname = lastname;
        }

        public void print() {
            System.out.println("FirstName: " + firstname);
            this.print();
            System.out.println("LastName: " + lastname);
            this.print();
            this.getAve();
        }
    }

    public class Calculations {

        private int Grade1;
        private int Grade2;
        private int Grade3;
        private double ave;

        public Calculations(int Grade1, int Grade2, int Grade3) {
            this.Grade1 = Grade1;
            this.Grade2 = Grade2;
            this.Grade3 = Grade3;
            this.ave = ave;
        }

        public void getAve() {
            ave = (Grade1 + Grade2 + Grade3) / 3;
        }

        public void print() {
            System.out.println("Student Details: ");
            this.print();
            System.out.println("Grade1: " + Grade1);
            System.out.println("Grade2: " + Grade2);
            System.out.println("Grade3: " + Grade3);
            System.out.println("The average is: " + ave);
        }

    }
}

错误在这里:

persons[0] = new students("Vincent","Dimalanta",90,85,80);

我希望你能帮助我,我知道这是一个非常简单的问题,但对我来说很难,因为我目前是编程世界的初学者

谢谢

【问题讨论】:

  • 查找错误的最佳方法是阅读错误消息。如果不发布这些准确且完整的错误消息,您会让我们更加困难。也就是说,现在遵循这些简单的规则:每个 Java 文件一个类。不要在其他类中定义类。稍后您将了解内部类。
  • 一方面,您正在递归调用 print() 方法。那里有一个堆栈溢出。
  • this.ave = ave;是没有意义的,因为 ave 为零。像“getAve”这样的方法名称应该用于返回字段的东西。可以在构造函数中计算平均值。

标签: java inheritance polymorphism abstraction


【解决方案1】:
for (students person : persons) {
        person.print();
    }

上述代码调用,

`public void print() {
     System.out.println("FirstName: " + firstname);
     this.print();
     System.out.println("LastName: " + lastname);
     this.print();
     this.getAve();
 }`

通过this.print()递归调用print()。这可能会创建stackoverflow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2017-06-29
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多