我可以通过引用父类来访问子类的成员变量吗?

时间:2016-07-02 10:22:21

标签: java inheritance

我有一个程序需要测试位于类的子级中的布尔变量(isBasic)的值。 e.g:

class Card{
     //some stuff here
 }

class land extends Card{
    private boolean isBasic;
    public void isBasic(){
        return isBasic;
    }
}

class usesCards extends somethingElse{
    //initialize variables like SIZE
    Card cardList = new Card[SIZE];

    public void addCard(Card card){
        if (card.isBasic()){
            //the rest
        }
    }
}

它一直告诉我,方法isBasic()在Card中不存在。我不认为它应该存在于卡片中,因为它是Land的特定部分。卡的其他孩子不应该有这个变数。我是否需要将其放入卡中,然后仅使用每个孩子的重要变量,或者我可以在Land中初始化isBasic并将其从卡中删除吗?

1 个答案:

答案 0 :(得分:0)

如果它不是它的实例,则不能在基类的对象中使用派生类的方法。您必须首先对card对象执行类检查。如果isBasic对象同时为Card,则您只能使用Land方法,并且您必须执行object casting

我让自己将类名更改为PascalCase,因为this is a recommended naming convention in Java

class Card {
     //some stuff here
}

class Land extends Card {
    private boolean isBasic;
    public void isBasic(){
        return isBasic;
    }
}

class UsesCards extends SomethingElse {
    //initialize variables like SIZE
    Card cardList = new Card[SIZE];

    public void addCard(Card card){
        // Checking card's actual class.
        if (card instanceof Land && ((Land)card).isBasic()){
            //the rest
        }
    }
}

Here您可以在Java中阅读有关继承的更多信息。

相关问题