вернуть тип подкласса в java - PullRequest
0 голосов
/ 01 мая 2020

У меня есть подкласс "OnlineCourse". Это подкласс "курса". Я хочу вернуть «OnlineCourse» в моем классе «Студент». Но вместо «EIST» я получаю нулевое значение.

Вот что у меня есть:


public class Student {

public String matriculationNumber;
public String name;
public int age;

public Course study() {

TODO 4: закомментируйте приведенный ниже код в поле «Измените тип курса на OnlineCourse и установите для его заголовка значение« EIST », чтобы вернуть новый курс

    // Course course = new Course();
    // course.join();
    // return course;

    Course EIST = new OnlineCourse(); 
    EIST.join();
    return EIST;
}
}

Подкласс, который расширяет курс и должен быть инициирован как тип возврата для "EIST" в классе Student.

public class OnlineCourse extends Course{
public URL livestreamUrl; 
public Course join() {
    System.out.println("joined the course " + title);
    return this; 
}
public Course drop() {
    System.out.println("dropped out of the course" + title);
    return this; 
 }
}

public abstract class Course {

public String title;
public String description;
public LocalDate examDate;
public List<Lecture> lectures;

public abstract Course join();
public abstract Course drop();
}

Main- Метод:

public class Main {

public static void main(String[] args) {
    var student = new Student();
    student.matriculationNumber = "01234567";
    student.name = "Joe Doe";
    student.age = 42;
    student.study();
 }
}

1 Ответ

0 голосов
/ 01 мая 2020

Я думаю, вы говорите, что название курса отображается как ноль. В этом случае вы должны установить его для печати. Я также хотел бы отметить, что там, где у вас есть EIST - это просто имя переменной, оно может быть любым и никак не влиять на любые значения.

Если бы я догадался, я думаю, вы бы хотели что-то вроде этого -

public static void main(String[] args) {
    var student = new Student();
    student.matriculationNumber = "01234567";
    student.name = "Joe Doe";
    student.age = 42;
    student.study("EIST");
 }

И, конечно, вам нужен метод установки для заголовка, например, -

public setCourseTitle(String title) {
    this.title = title;
}

И в Студент

public Course study(String courseTitle) {
    Course EISTCourse = new OnlineCourse();
    EISTCourse.setCourseTitle(courseTitle);
    EISTCourse.join();
    return EISTCourse;
}
...