如何根据if语句声明具有不同值的变量?

时间:2018-02-24 16:27:30

标签: java inheritance

我是一名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的下一个引用会导致编译错误:“找不到符号”

这是正确的方法吗?

1 个答案:

答案 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假设用小写字母开始变量名。