声明子类的对象

时间:2019-05-01 12:18:14

标签: java object 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 个答案:

答案 0 :(得分:0)

我修改了您的代码,如下所示。它似乎有效。 需要做以下事情

  1. 将访问说明符更改为受保护的成员变量 上等的Värdesaker(或者您可以为 访问私有变量)
  2. 将smycken标记为静态
  3. main方法无法访问非静态,非公共成员变量。因此,您必须实例化参数或像以前在构造函数中使用一样创建。

//修改后的类

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

    }
  }
}