| | |
| |
|
Објектно оријентирани концепти во Јава - Втор дел |
Контрола на пристап до променливи
Како што веќе видовме секоја класа може да се декларира како „public“ за истата да биде достапна од друг пакет. Исто така и до членовите на класите (се мисли на особеностите и методите) може да се има контрола на пристапот. Како и класите така и членовите имаа вообичаено подесување за пристапот до нив кое е подесено да до истите може да се пристапи само од истиот пакет. На пример:
int vkupnoJabolka = 0;
boolean skiniJabolko(int brojNaJabolka) {
...
...
}
Иако класата е декларирана како „public“, до вредноста на променливат „vkupnoJabolka“ може да се пристапи за читање или модификација само од код/класи кои се во ист пакет. Исто така методот „skiniJabolko“ може да биде повикан од код/класи кои се во истиот пакет како и класата „Jabolknica“.
Како и класите така и особеностите и методите можат да бидат декларирани како „public“:
public int vkupnoJabolka = 0;
public boolean skiniJabolko(int brojNaJabolka) {
...
...
}
Во ваков случај било од каде може да се пристапи и модифицира „public“ особеноста или да се повика „public“ методата.
Особеностите и методите имаат уште два начина на контрола на пристап кои класите ги немаат. Првиот е „private“:
private int vkupnoJabolka = 0;
private boolean skiniJabolko(int brojNaJabolka) {
...
...
}
Во овој случај само кодот од истата класа може да пристапи до приватните (private) особености и методи. Доколку сакаш да зачуваш информација која е корисна само за објектот и неговите методи тогаш сигурни ќе сакаш да го ограничиш пристапот на другите класи до тоа парче од код (како што ќе видиме понатака тоа е дел од добар дизајн на класи!).
Последниот начин на контрола на пристап до особеностите и методите на една класа е „protected“:
protected int vkupnoJabolka = 0;
protected boolean skiniJabolko(int brojNaJabolka) {
...
...
}
Слично како и вообичаениот начин на контрола на пристап, така и „protected“ недозволува пристап до особеностите и методите од некој друг пакет, но исто така воведува и еден исклучок. Сите подкласи од моменталната класа (класите кои ја наследуваат оваа класа) можат да пристапат до особеностите и методите, иако се во различен пакет!
За да се направи разлика во која ситуација, кој начин на контрола ќе се употреби бара малку искуство. Знам дека во почеток е искушение се да ставиш „public“ за да се поштедиш од мислење понатака дали некоја особеност (или метода) е пристапна од друга класа, друга пакет итн. Секако дека и тој пристап ќе работи, но тоа дефинитивно не е во начелата на објектно орјентираното програмирање. Кодот (класите) кои ќе бидат користени на други места, во други проекти ќе биде во корист доколку е што порестрективно дизајниран, односно да се дозволи пристап исклучиво до она што на другиот програмер ќе му биде од основна корист. Еден пример за ова што го зборувам во последниов пасус следи на наредната страна.
|
|
|
|
|
|
| |
|
|
---|
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc. Сите други трговски марки се сопственост на нивните сопственици. |
|