public class Account {
...
}
transferTo
na objektu bankovního účtu, který mu patří, a nikdo jiný ne".Existují čtyři možnosti:
public
= veřejnýprotected
= chráněnýprivate
= soukromýTřídy mohou být:
public
lokální v balíku
ale to jen u tzv. vnořených tříd (tříd uvnitř ve třídách), mimo rozsah předmětu PB162
Vlastnosti tříd = atributy a metody mohou být:
public
protected
lokální v balíku
private
public
)
Viditelnost public
, přístupné odevšad
public class Account {
...
}
Account
je veřejná, tj. lze např.Account
i v metodě jiné třídy;Account
ve stejném i jiném balíku.Account
musejí být veřejné
(ale mohou).public
protected
)
Viditelnost protected
, tj. přístupné jen
z podtříd a ze tříd stejného balíku
public class Account {
// attribute can be protected (but it is better to have it private)
protected float creditLimit;
}
protected
Viditelnost lokální v balíku = přátelský → přístupné jen ze tříd stejného balíku, už ale ne z podtříd, jsou-li v jiném balíku.
public class Account {
Date created; // attribute is package-local
}
protected
či private
.private
)private
(soukromý), tj. viditelné/přístupné jen v rámci třídy,
ani v podtřídách — používá se častěji pro proměnné než metody
Označením private
prvek zneviditelníme i případným podtřídám.
public class Account {
private String owner;
...
}
owner
je soukromý = nelze k němu přímo přistoupit ani v podtřídě — je tedy třeba zpřístupnit proměnnou pro "vnější" potřeby jinak, např.setOwner(String owner)
a String getOwner()
.get
) spočítat.private
téměř vždy private
kromě konstant, které chceme vidět odjinud,
kromě těch nabízených veřejně je taky vhodné použít private
,
protected
kvůli možnému
překrývání v podtřídách.private
nic zásadně nepokazíme, případně lze
při pozdějších modifikacích změnit na protected
.Obvykle se řídíme následujícím:
by měla být public
, je-li užitečná i mimo třídu či balík — "navenek",
což je typické u metod předepsaných v rozhraní.
Je metoda určená/vhodná k překrytí případných podtřídách? pak protected
,
jinak klidně private
.
by měl být private
a zcela výjimečně protected
tehdy,
je-li potřeba přímý přístup v podtřídě. Téměř nikdy bychom neměli
deklarovat atributy jako public
(vyjma případů, kdy jde o konstanty určené ke sdílení vně)!
public
) musí být umístěné do souborů
s názvem totožným s názvem třídy (a přípona .java
)
i na systémech Windows (vč. velikosti písmen)./