Java Расширение Java классов и переопределение их методов - PullRequest
0 голосов
/ 19 июня 2020

Я должен создать консольное приложение Java, которое определяет класс, расширяет его на два других класса, переопределяет toString () для всех трех классов, создает экземпляры классов в трех объектах, вызывает toString () для этих объектов. , и распечатывает возвращаемое значение каждого вызова toString ().

Приложение создает экземпляры трех объектов из Course, FlexPathCourse и GuidedPathCourse и вызывает их соответствующие методы toString ().

У меня есть коды ниже. Но для FlexPathCourse. java и GuidedPathCourse. java я получаю сообщение об ошибке «Объект-конструктор в объекте класса не может быть применен к данным типам», где находится «super (code1, hours, title1)». Вы можете объяснить, что это значит и что мне делать вместо этого? Заранее спасибо.

Main Class

public class U1A1_InheritOverridetoString {

    public static void main(String[] args) {
        Course c1 = new Course("TBD", 3, "TBD");
        FlexPathCourse c2 = new FlexPathCourse("IT2230", 3, "Introduction to Database Systems");
        GuidedPathCourse c3 = new GuidedPathCourse("ITFP4739", 3, "Mobile Cloud Computing Application Development");

        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }

}

Course.java

public class Course {
    protected String code;
    protected int creditHours;
    protected String title;

    public Course(String code1, int hours, String title1){
            code = code1;
            creditHours = hours;
            title = title1;
    }

    @Override
    public String toString(){
        return "Java class name = 'Course' " + "Course Code = " + code;
    }
}

FlexPathCourse.java

public class FlexPathCourse {
    private String optionalResources;

    public FlexPathCourse (String code1, int hours, String title1){
        super(code1, hours, title1);
    }
        @Override
        public String toString(){
            return "Java class name = 'FlexPathCourse' " + "Course Code = " + code;
        }

    }

GuidedPathCourse.java

public class GuidedPathCourse {
    private String requiredResources;
    private int duration;

    public GuidedPathCourse(String code1, int hours, String title1){
        super(code1, hours, title1);
    }
    @Override
    public String toString(){
        return "Java class name = 'GuidedPathCourse' " + "Course Code = " + code;
    }
}

Ответы [ 4 ]

1 голос
/ 19 июня 2020

если вы хотите расширить один класс, вы должны использовать extension при объявлении другого класса

public class GuidedPathCourse extends Course{
      private String requiredResources;
      private int duration;

      public GuidedPathCourse(String code1, int hours, String title1){
           super(code1, hours, title1);
      }
      @Override
      public String toString(){
          return "Java class name = 'GuidedPathCourse' " + "Course Code = " + code;
       }


}

То же самое с FlexPathCourse

1 голос
/ 19 июня 2020

Похоже, вы пропустили расширение класса курса, например,

public class FlexPathCourse extends Course

OR

public class GuidedPathCourse extends Course
1 голос
/ 19 июня 2020

Super ссылается на класс, который он расширяет.

[SuperClass] -> [class] в вашем случае

[Course] -> [FlexPathCourse]
         -> [GuidedPathCourse]

Чтобы сообщить Java об этой связи (наследование), вам нужно использовать extends, например: public class FlexPathCourse extends Course { ... }

После этого вы можете использовать свойства наследования, такие как полиморфизм , что является важной функцией в Java.

Объяснено в этой ссылке: https://www.w3schools.com/java/java_polymorphism.asp

Об ошибке

Constructor object in class object cannot be applied to given types

Означает, что вы не объявили подобный конструктор, это будет решено, когда вы расширите класс, потому что теперь он распознает конструктор super (), который вы объявили в классе Course

0 голосов
/ 19 июня 2020

в GuidedPathCourse и FlexPathCourse добавьте extends Course вот так:

public class GuidedPathCourse extends Course {
...