Получение атрибута дочернего класса из массива объектов родительского класса - PullRequest
0 голосов
/ 11 октября 2019

Я написал 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
  1. Я просто хочу вернуть значение переменной covercharge в массиве объектов так же, как я для "имени""и переменные" numPlayers ".
  2. " массив "установлен как массив Band, и поэтому я понимаю, что getCoverCharge не является методом для этого класса (это родительский класс).
  3. Мне все время говорят, что я не могу вызвать getCoverCharge, потому что я пытаюсь сделать статическую ссылку, но для меня ничего не выглядит статичным.

Извините, это так долго ... пытаюсь бытькап.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...