Объявление объекта подкласса - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь создать экземпляр подкласса '' smycken '', но, похоже, он не работает, поскольку '' namn '' в параметре выдает ошибку.

public abstract class Värdesaker {

    String namn;
    double värde;
    double moms = 1.25;

    public static void main(String[] args) {

        Värdesaker v = new smycken(namn, false, 0);

    }

    class smycken extends Värdesaker {

        double vikt, ädelstenar;

        public smycken(String namn, boolean guld, int ädelstenar) {
            this.namn = namn;
            this.ädelstenar = ädelstenar;
            if (guld)
                this.värde = (2000 + (ädelstenar * 500)) * moms;
            else
                this.värde = (500 + (ädelstenar * 500)) * moms;

        }

1 Ответ

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

Я изменил ваш код следующим образом.Вроде работает.Требуются следующие вещи

  1. Изменение спецификатора доступа на защищенный для переменных-членов суперкласса Värdesaker (или вы можете предоставить getter-setters для доступа к приватным переменным)
  2. Пометить smycken как статический
  3. Основной метод не может получить доступ к нестатическим, непубличным переменным-членам. Так что вам нужно создать экземпляр аргументов или создать как прежде, чем использовать в конструкторе.

// модифицированный класс

  public abstract class Värdesaker {
  protected String namn;
  protected double värde;
  protected double moms = 1.25;

  public static void main(String[] args)
  {

    Värdesaker v = new smycken("Test", false, 0);

  }

  static class smycken extends Värdesaker
  {

    double vikt, ädelstenar;

    public smycken(String namn, boolean guld, int ädelstenar)
    {
      this.namn = namn;
      this.ädelstenar = ädelstenar;
      if (guld) {
        this.värde = (2000 + (ädelstenar * 500)) * moms;
      } else {
        this.värde = (500 + (ädelstenar * 500)) * moms;
      }

    }
  }
}
...