Man teko susidurti su Java kodu, kurio struktūra buvo tokia:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
Žinau, kad C++ kalboje parametrui galiu priskirti numatytąją reikšmę. Pavyzdžiui:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
Ar Java palaiko tokią sintaksę? Ar yra kokių nors priežasčių, kodėl ši dviejų žingsnių sintaksė yra priimtinesnė?
Ne, struktūra, kurią radote, yra tokia, kokią naudoja "Java" (t. y. su perkrovimu, o ne numatytaisiais parametrais).
Dėl konstruktorių, Žr. veiksmingą "Java: programavimo kalbos vadovą'ą 1 punkto patarimą (Apsvarstykite statinius gamyklinius metodus vietoj konstruktorių), jei perkrovimas tampa sudėtingas. Kitiems metodams gali padėti kai kurių atvejų pervadinimas arba parametro objekto naudojimas. Taip yra tada, kai turite pakankamai sudėtingų metodų, kuriuos atskirti yra sunku. Neabejotinas atvejis, kai reikia atskirti naudojant parametrų eiliškumą, o ne tik skaičių ir tipą.
Ne.
Tokią pačią elgseną galite pasiekti perduodami objektą, kuris turi išmaniąsias numatytąsias reikšmes. Tačiau vėlgi tai priklauso nuo jūsų konkretaus atvejo.