从Java中的不同类访问方法

时间:2013-03-06 04:21:03

标签: java methods

我正在编写一个程序,我想从另一个类访问一个方法。我知道你应该为你想要使用的方法创建一个新对象,但是每次我这样做时,都会说“构造函数Card()是未定义的”。我不想访问构造函数,我想访问该类中的不同方法。

这是我的方法的开始,我想把我的“其他”方法带入。我尝试创建一个新对象,但它在* __ *:

之间的那个部分给了我一个错误
public void addCard(Card[][]card) {
    Card card1;
    card1 = *new Card();*

另一种方法简称为getCard(int r, Suit s)(这是一个不同的类)。这个类中还有一个构造函数方法,这就是错误似乎在讨论的内容。?

如果你能提供帮助那就太棒了,谢谢!

这是我的卡类:

public class Card {
private static Card[][] card = new Card[4][13];
private int rank;
public enum Suit{hearts, diamonds, clubs, spades};
private Suit suit;

private Card(int r, Suit s){
    this.suit = s;
    this.rank = r;
}

public int getRank(){
    return rank;
}

public Suit getSuit(){
    return suit;
}

public static Card[][] getCard(int r, Suit s){
    if(card == null){
        return card;
    }
    else{
        card = new Card[4][13];
        return card;
    }
}

4 个答案:

答案 0 :(得分:4)

你应该像这样实例化一个新对象:

Card card = new Card();

另一方面,如果您的设计中使用了类的方法而没有实例化该类的对象,那么您正在寻找static关键字。 static 定义的方法和变量被定义为类的属性而不是对象的属性。因此,您可以在不初始化对象的情况下使用static方法。

public Class A{
  public static void methodName(){
    //you can call that methods from anywhere using A.methodName();
  }
}

答案 1 :(得分:2)

当您尝试设置类的实例时,会自动调用构造函数。

只要您不创建另一个构造函数,就会自动为您生成默认的no-args构造函数。完成后,需要自己指定 no-args构造函数,如下所示。

public Card(){}

答案 2 :(得分:1)

当用户定义参数化构造函数时,编译器不提供默认构造函数,因此如果用户希望通过不向构造函数提供参数来创建对象,则必须定义默认构造函数。

public Card()
{
    //do something
}

看起来你有私有构造函数,将构造函数更改为以下

public Card(int r, Suit s)
{
    this.suit = s;
    this.rank = r;
}

注意:如果您想以下列方式创建Card对象:

Card card1;
card1 = new Card();

你可以定义public no argument constructor(即public Card(){})或者什么都不定义(如果没有:编译器不提供参数构造函数)

如果您想以这种方式创建Card对象:

Card card1, card2;
card1 = new Card();
card2 =  new card(1,new Suit());

你必须包含我在上面显示的构造函数。

答案 3 :(得分:0)

当您使用参数编写构造函数时,JVM会隐藏默认构造函数(没有参数)。所以现在您需要定义一个没有参数的构造函数。所以现在需要定义一个构造函数

public Card(){
}

OR 使用参数化构造函数new Card(params)创建对象