声明子类的对象

Declaring object of subclass

我正在尝试创建子类“'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. 将访问说明符更改为受保护的成员变量 super class Värdesaker(或者你可以提供 getter-setters 访问私有变量)
  2. 将 smycken 标记为静态
  3. main 方法无法访问非静态、非 public 成员 variables.So 您必须实例化您的参数或像在构造函数中使用之前一样创建。

//修改后class

  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;
      }

    }
  }
}