使用主输入参数麻烦调用构造函数

问题描述 投票:0回答:1

我正在尝试使用Java,并使用面向对象的原理创建小型扑克游戏。但是,我遇到了从main调用构造函数的问题。

class Card
{
    private char face;
    private char suit;

    Card(char face, char suit)
    {
      this.face = face;
      this.suit = suit;
    }

    @Override
    public String toString()
    {
      return Character.toString(face) + Character.toString(suit);
    }
}

public static void main(String[] args)
{
    Card oneCardHand = new Card('A', 'c');

    System.out.println("Made it this far");
    System.out.println(oneCardHand);
}

我收到以下错误:

非静态变量,不能从静态上下文中引用它

所以我觉得我要么错过了一个愚蠢的语法东西,要么更可能是不了解关于静态和非静态变量的关键见解。

java constructor static non-static
1个回答
1
投票

Card类被声明为实例内部类。要么:

  • 将其转换为静态内部类:
static class Card
  • 或者,创建外部类的实例以获取内部类的实例(假设外部类称为Outer:]]
Outer.Card oneCardHand = new Outer().new Card('A', 'c');
  • 或者,将main方法移到Card类中。

  • 或者,将Card类移动到单独的源文件(Card.java),这通常是首选方法。


  • 阅读有关嵌套类的更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.