2016-12-02 6 views
-1

Вот главный классКонструктор подкласса

** 
** Assignment class 
** 
** This class represents an Assignment. 
** 
****************************************************/ 
public class Assignment { 
private String name; 
private double pointsPossible; 
private double pointsEarned; 

// Assignment constructor 
// 
// postcondition: all instance variables are initialized with 
// the given values. 
public Assignment (String n, double ptsPoss, double ptsEarned) { 
name =n; 
pointsPossible=ptsPoss; 
pointsEarned=ptsEarned; 
} 
// getName accessor method 
// 
// postcondition: returns the name of this Assignment public 
String getName() { 
return name; 
    } 

// getPointsPossible accessor method 
// 
// postcondition: returns the points possible for this Assignment 
public double getPointsPossible() { 
return pointsPossible; 
    } 
// getPointsEarned accessor method 
// 
// postcondition: returns the points earned for this Assignment 
public double getPointsEarned() { 
return pointsEarned; 
} 
} 

и когда я пытаюсь использовать мои аксессор в моем подклассе я получаю сообщение об ошибке при попытке инициализировать свой переменные

здесь подкласс

import java.util.ArrayList; 
/**************************************************** 
** 
** CategoryAssignment class 
** 
** This class represents an CategoryAssignment. 
** Do not add any additional methods to this class. 
** 
****************************************************/ 
public class CategoryAssignment extends Assignment { 
    // declare any new instance variables that you need here 
    // don't forget to make them private! 
    // don't declare more that you really need! 
    // CategoryAssignment constructor 
    // 
    // postcondition: all instance variables are initialized with 
    // the given values.  
    public CategoryAssignment (String n, double ptsPoss, double ptsEarned, String cat) { 

    } 

    // getCategoryName accessor method 
    // 
    // postcondition: returns the name of the category associated 
    // with this CategoryAssignment 
    public String getCategoryName() { 
     return cat; 
    } 
} 

Я не могу заставить переменные подкласса инициализировать. Кроме того, если это будет проект класса книги, было бы разумно хранить переменную категорий в массиве или ArrayList?

+3

Какая ошибка? пожалуйста, покажите stacktrace. Кроме того, пожалуйста, правильно отформатируйте код – ItamarG3

+0

Я никогда не вижу 'cat', определенный в классе. – Compass

ответ

1

Не должен ваш подкласс CategoryAssignment вызова конструктора суперкласса? Что-то вроде:

public CategoryAssignment (String n, double ptsPoss, double ptsEarned, String cat) { 
    super(n, ptsPoss, ptsEarned); 
    this.cat = cat; 
} 

Вам также необходимо определить атрибут String cat в CategoryAssignment.

Что касается вашего второго вопроса «Кроме того, при этом будучи класс книжный проект будет это быть умным, чтобы сохранить категории переменных в массиве или ArrayList?», Насколько я могу видеть в добытчика, переменная cat является строкой. Трудно сказать, будет ли список или массив наиболее подходящим с предоставленной вами информацией.

0

В Java нет такой вещи, как неявная цепочка конструкторов, даже если конструкторы подкласса и суперкласса имеют одинаковые подписи. Вы должны явно передать параметры в конструктор суперкласса с super ключевого слова:

public CategoryAssignment 
    (String n, double ptsPoss, double ptsEarned, String cat) { 
    super(n, ptsPoss, ptsEarned, car); 
} 
+0

Кроме того, член 'cat' не определен (прокомментированная часть во втором классе уточняет это) – ItamarG3

0

Я думаю, вы должны смотреть на вызове конструктора на вас базовый класс от вашего суб класса.

public CategoryAssignment (String n, double ptsPoss, double ptsEarned, String cat) { 
    base(n, ptsPoss,ptsEarned, cat); 
} 
+0

этот вопрос находится в JAVA, а не C# – ItamarG3

0

Прежде всего: Вы должны объявить переменную cat в своем классе, если хотите получить доступ к этому. Вы должны добавить это в своем классе:

private String cat; 

Далее: первое заявление в подклассе конструктор конструктор суперкласса. В вашем случае:

public CategoryAssignment(String n, double ptsPoss, double ptsEarned, String cat) { 
     super(n, ptsPoss, ptsEarned); 
     this.cat = cat; 
    } 
Смежные вопросы