我是一名java初学者,我正在使用类继承。我已经定义了一个抽象类Taula2D和两个子类Taula2DVersio1和Taula2DVersio2。 我的问题的简短版本:我可以像这样定义一个变量Tau而没有任何问题。
Taula2DVersio1 Tau = new Taula2DVersio1(al,am);
如果我像这样定义一个变量Tau(类取决于条件)
if (!(Versio==1)) {
Taula2DVersio2 Tau = new Taula2DVersio2(al,am); // alçada,amplada
}
else {
Taula2DVersio1 Tau = new Taula2DVersio1(al,am);
}
然后对变量Tau的下一个引用会导致编译错误:“找不到符号”
这是正确的方法吗?
答案 0 :(得分:3)
您可能在if else
块之外引用此变量。如果你这样定义,它只在这个块中可用,如果你想在这个块之前或之后使用它,它将无法使用。
您应该在if else
块之外定义此变量,并且它随处可用:
Taula2D Tau;
if (!(Versio==1)) {
Tau = new Taula2DVersio2(al,am); // alçada,amplada
} else {
Tau = new Taula2DVersio1(al,am);
}
像T.J.注释中提到的Crowder,或者您可以使用条件运算符,在这种情况下,它与if else
完全相同:
Taula2D Tau = Versio == 1 ? new Taula2DVersio1(al,am) : new Taula2DVersio2(al,am);
PS:Coding conventions in Java假设用小写字母开始变量名。