我有一个程序需要测试位于类的子级中的布尔变量(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并将其从卡中删除吗?
答案 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中阅读有关继承的更多信息。