Инициализировать частные переменные из подкласса - PullRequest
0 голосов
/ 14 февраля 2019

У меня предстоящий экзамен, и одно из практических заданий заключается в следующем:

Моя проблема с этим заданием - это имя двух личных переменных и курс.Частный означает, что они не могут быть перезаписаны подклассами, верно?Как я должен инициализировать эти переменные из подклассов?

Пока это мой код, но он не работает:

class Bachelor extends Student{
    Bachelor (String n, String c){
        name = n;
        course = c;
    }
    void printlabel() {
        System.out.println("%s\nBachelor %s",name, course);
    }
}
class Master extends Student{
    Master (String n, String c){
        name = n;
        course = c;
    }
    void printlabel() {
        System.out.println("%s\nMaster %s",name, course);
    }
}

public abstract class Student {
    private String name;
    private String course;
    public Student (String n, String c) {
        name = n;
        course = c;
    }
    void printname() {
        System.out.println(name);
    }
    void printcourse() {
        System.out.println(course);
    }

    public static void main(String[] args) {
        Bachelor rolf = new Bachelor("Rolf", "Informatics");
        rolf.printname();

    }
    abstract void printlabel();
}

Подробное описание: Создать class Student с двумя частнымипеременные объекта name и course.Затем создайте конструктор, который инициализирует эти переменные, методы printname() и printcourse() и метод astract printlabel().

Затем создайте два подкласса Bachelor и Master.Предполагается, что они имеют конструктор и перезаписывают абстрактный метод.

например,

Bachelor b = new Bachelor("James Bond", "Informatics");
b.printlabel();

Предполагается, что он возвращает имя, имя класса и курс.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Добавьте публичный метод, который устанавливает частные свойства.Вызовите публичные методы из contructor.

0 голосов
/ 14 февраля 2019

Вы можете получить доступ к конструктору суперкласса с помощью вызова super().Так что в вашем подклассе просто вызовите super(n, c); вместо непосредственного присвоения переменных, и вы должны получить ожидаемое поведение.

...