我是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的引用会导致汇编错误:"找不到符号"
哪种正确的方法?
您可能是在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:Java中的编码约定假定带有小字母的启动变量名称。