Java 未定义特殊类型的方法的问题

Java 未定义特殊类型的方法的问题,java,Java,我正在学习Java,我想实现klondike游戏的一个程序,但我遇到了一个问题,即在一副牌的顶部添加一张牌的方法(该方法将一张牌对象作为参数)。它是在一个母类中定义的(母类有一个构造函数,用于创建卡片对象的ArrayList)。我调用了一个子类的方法,该方法将堆栈上的卡片放回原位。然而,有一个例外,当我在子类的实例上调用它时,它说“add_card_on_top(card)方法对于类型ArrayList是未定义的”,我想知道确切的问题是什么 这是主类的代码 public abstract cla

我正在学习Java,我想实现klondike游戏的一个程序,但我遇到了一个问题,即在一副牌的顶部添加一张牌的方法(该方法将一张牌对象作为参数)。它是在一个母类中定义的(母类有一个构造函数,用于创建卡片对象的ArrayList)。我调用了一个子类的方法,该方法将堆栈上的卡片放回原位。然而,有一个例外,当我在子类的实例上调用它时,它说“add_card_on_top(card)方法对于类型ArrayList是未定义的”,我想知道确切的问题是什么

这是主类的代码

public abstract class Deck 
{
protected ArrayList<Card>deck=new ArrayList<>();
public Deck()
{
    this.deck=new ArrayList<Card>();
}
public Card get_card_on_top()
{
    return deck.get(0);
}
public Card get_cards(int i)
{
    return this.deck.get(i);
}
public void add_card_on_top(Card card)
{
    deck.add(0, card);
}
公共抽象类组
{
受保护的ArrayListdeck=新的ArrayList();
公共甲板()
{
this.deck=newarraylist();
}
公共卡获取卡在顶部()
{
返回甲板。获取(0);
}
公共卡获取卡(int i)
{
归还这个。甲板。获取(i);
}
公共作废在顶部添加卡片(卡片)
{
卡片组。添加(0,卡片);
}
下面是子类的代码

package patience;
public class Stack extends Deck 
{
public Stack(Deck_dealer deck_dealer) 
    {
    this.deck=deck_dealer.deck;
    }
public void get_card_on_stack_put_on_discard(Discard discard, int i)
    {
    discard.add_card_on_top(this.deck.get(i));
    this.deck.remove(i);
    }
public void set_back_cards_on_stack(Discard discard)
    {
    if (this.deck.isEmpty())
        {
        for(int i=0; i<discard.size(); i++)
            {
            this.deck.add_card_on_top(discard.deck.get(i));
            discard.deck.remove(i);
            }
        }
    }
}
package;
公共类堆栈扩展甲板
{
公用烟囱(甲板经销商甲板经销商)
{
this.deck=deck_dealer.deck;
}
公共无效获取卡在堆栈上放置在丢弃上(丢弃丢弃,int i)
{
丢弃。在顶部添加卡片(这个。牌组。获取(i));
本.甲板.拆除(i);
}
公共无效设置\u回\u堆栈上的卡\u(放弃)
{
if(this.deck.isEmpty())
{

对于(int i=0;i您正试图调用
add\u card\u on\u top
on
this.deck
这是一个
ArrayList
。但是该方法在
ArrayList
中不存在。您可能只想调用
this.add\u card\u on\u on\u top
而不是
this.deck。add\u card\u on\u on\u top
。我建议查看Java风格指南和遵循语言的惯例。这并不能解决您的问题,但它确实让其他人更容易快速阅读和理解您的代码。