Автор: Ткаченко О.М.
Наступна таблиця узагальнює рівні доступу при зазначенні відповідних специфікаторів в описі.
Таблиця 3.1. Доступ до атрибутів і методів класу
Лістинг 3.14 демонструє використання різних типів доступу до елементів класу.
Лістинг 3.14
class DemoAccess {
public static final double C = 8.05; // доступний будь-де в програмі
private int x; // доступний лише в межах класу DemoAccess
double y; // доступний в межах пакету
public int z; // доступний будь-де в програмі
DemoAccess() {x=1; y=1; z=1; } // конструктор
public void setX(int in) { x=in;} // доступний будь-де в програмі
public int getX() { return x;} // доступний будь-де в програмі
private double getExpr() { // доступ лише в межах класу
return (x*x+y*y)/2;
}
public double getFunction(double in) {
return in*Math.sqrt(getExpr()); // доступ до getExpr() в межах класу
}
}
class pr3_1 4 {
public static void main(String[ ]args) {
double h = 100*DemoAccess.C; // доступ до С як до public атрибуту
DemoAccess demo = new DemoAccess();
double a = 2.4*demo.y+3.5; // доступ до у є, оскільки це один пакет
System.out.println("a="+a);
// int b = 2*demo.x+5; – таке неприпустиме, оскільки x – private,
// для доступу до х треба скористатися публічними методами
// setX( ) та getX( )
demo.setX(-7);
int b = 2*demo.getX()+20;
System.out.println("b="+b);
demo.z += 12.55; // доступ до z є, оскільки він public
b = 2*demo.z;
System.out.println("b="+b);
// System.out.println(demo.getExpr()); – не можна, бо getExpr() не є
// доступним з-за меж класу DemoAccess
System.out.println(demo.getFunction(2*h));
}
}
Результат роботи програми:
a=5.9
b=6
b=26
8050.000000000001
Сам клас може також бути оголошений як public. У цьому випадку він є видимим звідусіль у програмі. Якщо клас не має специфікатора доступу, він видимий лише в межах пакету.