Como chamar o método de outra classe?

A. Sri:

Então, eu sou um novato em OOP e atualmente estou tendo problemas ao usar uma função de outro método. A classe a seguir é a classe principal para um jogo de cartas. Aqui ele cria um baralho de cartas, criando um objeto da classe do jogo. Em seguida, começa o jogo com a plataforma criada e deve imprimir o tamanho do deck.

public class Run {

public static void main(String[] args) {

    Game game;
    System.out.println("Welcome!");
    play = true;
    while (play) {
        game = new Game(3); //Create deck of card based on number of ranks given
        game.play(); //Starts the game with deck of card
    }

}

A classe a seguir é a classe do jogo. Quando o jogo começa, deve imprimir o tamanho do baralho criado.

public class Game {
public Game(int ranks)
{
    Deck Main = new Deck(ranks);
}
public static void play()
{
    System.out.println(Main.size()); //Where the error occurs
}

A classe a seguir é a classe plataforma onde ele realmente cria o convés e tem um método que retorna o tamanho desse deck.

public class Deck {

private ArrayList<Card> cards;

public Deck(int range) {
    cards = new ArrayList<Card>();
    for (int i=1; i<=range; i++)
    {
        Card card = new Card(1, i);
        Card card2 = new Card(2, i);
        Card card3 = new Card(3, i);
        Card card4 = new Card(4, i);
        cards.add(card);
        cards.add(card2);
        cards.add(card3);
        cards.add(card4);
    }
}
public int size() 
{
    int num=cards.size();
    return num;
}

A última classe é a classe Card.

public class Card {
private int rank;
private int suit;
public Card(int s, int r)
{
    suit=s;
    rank=r;
}
public int getSuit()
{
    return suit;
}
public int getRank()
{
    return rank;
}

Deve ser um erro óbvio devido a minha falta de compreensão Então, alguém pode mostrar o que fazer para corrigir isso?

GhostCat saudações Monica C.:

Você declarou "Main" como uma variável local dentro do construtor da classe Deck. Isso significa que só é visível no corpo desse construtor.

Você precisa ativar a variável local em um campo de sua classe em vez disso. Só então ela se torna "visível" em outros locais de sua classe! A mesma coisa que você fez corretamente para suite e posto em sua classe cartão!

E, claro, o método play deve não ser estática! Um jogo é sobre uma plataforma, não "todos eles"!

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=234928&siteId=1
Recomendado
Clasificación