我正在尝试使用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);
}
我收到以下错误:
非静态变量,不能从静态上下文中引用它
所以我觉得我要么错过了一个愚蠢的语法东西,要么更可能是不了解关于静态和非静态变量的关键见解。
Card
类被声明为实例内部类。要么:
static class Card
Outer
:]]Outer.Card oneCardHand = new Outer().new Card('A', 'c');
或者,将main方法移到Card
类中。
或者,将Card
类移动到单独的源文件(Card.java
),这通常是首选方法。
阅读有关嵌套类的更多信息: