Я написал 1 родительский класс с 2 атрибутами и 2 дочерних класса с дополнительным атрибутом, каждый из которых расширяет родительский класс. У меня есть Driverclass, который является пользовательским интерфейсом. В драйвере у меня есть массив различных объектов (из всех 3 классов), и я могу определить, является ли этот объект экземпляром дочернего класса. Я могу определить и изменить 2 атрибута, связанных с родительским классом. но не могу на всю жизнь сделать то же самое для дополнительного атрибута.
Я попытался просто вызвать метод типа getAttribute () из дочернего класса, но он говорит, что я вызываю его из статического поляи не позволит мне вызвать статический метод. Я не понимаю этого, потому что уверен, что ничего не сделал статичным в своем коде. Я пытался изменить вещи в моем дочернем классе на статические, чтобы я мог вызывать вещи, но затем каждый раз, когда я создаю новый объект дочернего класса, он перезаписывает каждый отдельный дочерний объект, который у меня уже был, и каждый его экземпляр имеет одинаковое значение дляуникальная переменная. Я попытался просмотреть здесь, и я потерян.
public class BandDriver{
public Band[] collective;
//this is the top of my driver, where "Band" is the Parent Class.
private void addJazz(){
System.out.println("What is the new Jazz Band's Name?");
String name1=scan.nextLine();
System.out.println("How many players are in the new Jazz Band?");
int players1=scan.nextInt();
System.out.println("How much does the Jazz Charge per show?");
float coverCharge1=scan.nextFloat();
scan.nextLine();
collective[size++]=new JazzBand(name1, players1, coverCharge1);
}
//this is where I create a new 'JazzBand' which is a child Class that
//extends 'Band'. the additional Attribute is "coverCharge".
private void update(int bandIndex){
System.out.println("\nBand Name: "+collective[bandIndex].name);
System.out.println("\nWould you like to change the name of the band? (Y/N)");
int decision=handleResponse(scan.nextLine());
if (decision==6){
System.out.println("\nEnter the new name for the Band");
collective[bandIndex].name=scan.nextLine();
}
System.out.println("\nNumber of players: "+collective[bandIndex].numPlayers);
System.out.println("\nWould you like to change the number of players "
+"in the band? (Y/N)");
decision=handleResponse(scan.nextLine());
if (decision==6){
System.out.println("\nEnter the new number of players");
collective[bandIndex].numPlayers=scan.nextInt();
scan.nextLine();
}
if (collective[bandIndex] instanceof JazzBand){
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println("\nThe cover charge this band set is: "
+fmt.format(JazzBand.getCoverCharge()));
}
}
//the getCoverCharge() Method is inside the JazzBand Child Class
- Я просто хочу вернуть значение переменной covercharge в массиве объектов так же, как я для "имени""и переменные" numPlayers ".
- " массив "установлен как массив Band, и поэтому я понимаю, что getCoverCharge не является методом для этого класса (это родительский класс).
- Мне все время говорят, что я не могу вызвать getCoverCharge, потому что я пытаюсь сделать статическую ссылку, но для меня ничего не выглядит статичным.
Извините, это так долго ... пытаюсь бытькап.