7 STATIKI LANOVI KLASE 1 to su lanovi














- Slides: 14
7 STATIČKI ČLANOVI KLASE 1
• to su članovi klase za čiju upotrebu nije neophodan objekat • definišu se dodavanjem modifikatora static • mogu biti polja, metode ili unutrašnje klase • statička polja igraju ulogu globalnih promenljivih, a statičke metode igraju ulogu potprograma • o statičkim unutrašnjim klasama - kasnije 2
statičke metode • pošto za aktiviranje statičkih metoda nije potreban objekat, one predstavljaju način za realizaciju (običnih) potprograma! • statička metoda definiše se dodavanjem modifikatora static u zaglavlje • u načelu, aktivira se iskazom naziv-klase. metoda(argumenti) • može se aktivirati i uobičajeno, preko objekta naziv-objekta. metoda(argumenti) 3
• na primer, standardna klasa Math sadrži matematičke funkcije realizovane kao statičke metode • funkcija sin aktivira se, na primer, sa Math. sin(2*x+5) gde je Math naziv pomenute klase. • zapaziti da su metode main, println i print statičke metode! 4
• Neka je Point klasa čiji objekti predstavljaju tačke u Dekartovom koordinatnom sistemu public class Point { private double x, y; //koordinate public Point(double x, double y) { this. x = x; this. y = y; } public double get. X() {return x; } public double get. Y() {return y; } public void set(double x, double y) { statička metoda this. x = x; this. y = y; } public static double distance(Point p 1, Point p 2) { return Math. sqrt(Math. pow(p 1. x()-p 2. x(), 2)+ Math. pow(p 1. y()-p 2. y(), 2)); } statička metoda } 5
primer: Point a, b; double r 1, r 2, r 3; a = new Point(1, 2); poziv preko klase (standardni postupak) b = new Point(3, 4); r 1 = Point. distance(a, b); može i ovako Point c = new Point(10, 20); r 2 = c. distance(a, b); //vazi r 1==r 2! Point q = null; r 3 = q. distance(a, b); //vazi r 1==r 2==r 3! moze čak i ovako! 6
statička polja • statička polja predstavljaju način za realizaciju globalnih promenljivih i imenovanih konstanata • mogu biti baznog ili klasnog tipa (objekti) • definišu se dodavanjem modifikatora static u definiciju i najčešće su public • u načelu, pristupa im se iskazom naziv-klase. polje • može se pristupiti i uobičajeno, preko objekta (vrlo retko) naziv-objekta. polje 7
• na primer, standardna klasa Math sadrži polje PI realizovano kao statičko polje • pristupa mu se sa Math. PI • zapaziti da je out statičko polje klasnog tipa u klasi System! 8
inicijalizacija statičkih polja • statička polja se inicijalizuju, kao i nestatička, na četiri načina: – direktno, u okviru definicije – implicitno (automatski) – putem konstruktora – tzv. statičkim blokom • prva tri načina: identično, kao i kod nestatičkih polja 9
• statički inicijalizacioni blok je deo klase i zadaje se kao i svaki drugi blok, sa dodatkom reči static class K { statički inicijalizacioni blok public static int w; ! static double x; static { w = 10; x = 2*Math. sqrt(w); }. . . 10
• statički inicijalizacioni blok biće izvršen: – pri prvom obraćanju statičkom članu (klasa ne mora biti instancirana) ili – pri prvom instanciranju klase • pošto u istoj klasi mogu da postoje i nestatička i statička polja, redosled inicijalizacije je – statička polja, pa onda – nestatička polja 11
odnos nestatičkih i statičkih članova • pravilo je jednostavno: – statičke metode mogu referencirati samo statičke članove klase (ne mogu referencirati nestatičke članove) – nestatičke metode mogu referencirati sve članove, statičke i nestatičke – konstruktori mogu referencirati sve članove klase 12
primer public class Klasa { private static double a; //staticko polje; private double x; //nestaticko polje može: nestatička public static void set. A(double aa) {a = aa; } metoda obraća se statičkom polju a public double get. A() {return a; } public static void set. X(double x) {this. x = x; } ne može: statička public double get. X() {return x; } metoda obraća se public static double stm() { nestatičkom polju x double z = get. X(); return z; ne može: statička metoda obraća se nestatičkoj } metodi get. X } 13
realizacija imenovanih konstanata • imenovane konstante realizuju se kao zaključana statička polja • zaključavaju se modifikatorom final public class K { public static final boolean TACNO = true; . . . } • imenovana konstanta TACNO koristi se putem iskaza K. TACNO i ima vrednost true • u klasi Math postoji tako realizovana konstanta Math. PI, koja ima vrednost 3. 1415926. . . 14