Jakie są piorytety zmiennych? (np.zadeklarowanych w bloku (lokalnych), parametrów metody, zmiennych instancyjnych klasy w stosunku do siebie? ) i po co one są ?
0
0
Java pozwala by parametr metody lub zmienna lokalna nazywała się tak samo jak pole klasy.
public class Osoba
{
private boolean plec;
.....
public Osoba(boolean plec)
{
// istnieją dwa "byty" o nazwie plec (parametr metody i pole klasy), priorytet ma parametr metody
// do pola o nazwie plec można dotrzeć poprzedzając nazwę słowem kluczowym this
// plec=plec; jest również poprawne ale jest instrukcją pozorną - nie zmienia wartości niczego
this.plec=plec;
.....
}
}
Częsty błąd początkujących:
public class Okno extends JFrame
{
private JButton stop;
......
public Okno()
{
.....
// powstaje zmienna lokalna stop przesłaniająca pole klasy
JButton stop=new JButton("Koniec");
stop.setEnabled(fasle);
add(stop);
.....
}
........
private void pewnaMetoda()
{
....
// błąd wykonania (NullPointerException), zmienna lokalna stop z konstruktora jest niewidoczna,
// pole klasy stop nie było inicjowane
stop.setEnabled(true);
}
}