JAVA siguron njė numėr tė madh tė modifikuesve jo tė aksesit pėr tė arritur shumė funksionalitete tė tjera.
Modifikuesi static pėr tė krijuar metoda dhe variabla tė klasave.
Modifikuesi final pėr tė finalizuar implementimet e klasave, metodave dhe variablave.
Modifikuesi abstract pėr tė krijuar klasa abstrakte dhe metoda.
Modifikuesit synchronized dhe volatile, qė pėrdoren pėr kėrcėnimet.
Modifikuesi Static
Variablat statikeFjala kyēe static pėrdoret pėr tė krijuar variablat qė do tė ekzistojnė tė pavarura nga ēdo instancė e krijuar pėr klasėn. Vetėm njė kopje e variablit static ekziston ndaj njė numri shumė tė madh tė instancave tė klasės.
Variablat statike njihen gjithashtu si variabla tė klasės. Variablat lokale nuk mund tė deklarohen statike.
Metodat StatikeFjala kyēe static pėrdoret pėr tė krijuar metoda qė ekzistojnė tė pavarura nga ēdo instancė tė krijuar pėr klasėn.
Metodat statike nuk pėrdorin variablat e instancės tė njė objekti ēfarėdo tė klasės ku janė pėrcaktuar. Metodat statike marrin tė gjitha tė dhėnat nga parametrat dhe llogarisin diēka me kėto parametra, pa qenė nevoja tė ketė referencė tek variablat.
Variablat dhe metodat e klasės mund tė aksesohen duke pėrdorur emrin e klasės tė ndjekur nga njė pikė dhe emrin e variablit ose metodės.
ShembullModifikuesi i aksesit pėrdoret pėr tė krijuar metoda dhe varibla tė klasės si nė shembullin e mėposhtėm:
public class InstanceCounter {
private static int numInstances = 0;
protected static int getCount() {
return numInstances;
}
private static void addInstance() {
numInstances++;
}
InstanceCounter() {
InstanceCounter.addInstance();
}
public static void main(String[] arguments) {
System.out.println("Starting with " + InstanceCounter.getCount() + " instances");
for (int i = 0; i < 500; ++i) {
new InstanceCounter();
}
System.out.println("Created " + InstanceCounter.getCount() + " instances");
}
}
Ky kod do tė prodhojė rezultatin e mėposhtėm:
Rezultati
Started with 0 instances
Created 500 instances
Modifikuesi Final
Variablat FinalNjė variabėl final mund tė inicializohet vetėm njė herė nė mėnyrė eksplicide. Njė variabėl reference e deklaruar final nuk mund tė ricaktohet kurrė pėr tė referuar njė objekt tjetėr.
Gjithsesi, tė dhėnat nė njė objekt mund tė ndryshohen. Pra, gjendja e objektit mund tė ndryshohet, por referenca e tij jo.
Me variablat, modifikuesi final shpesh pėrdoret me fjalėn static pėr ta bėrė konstantėn njė variabėl klase.
Shembull
public class Test {
final int value = 10;
// Kodi i mėposhtėm ėshtė shembull i njė konstanteje deklaruese:
public static final int BOXWIDTH = 6;
static final String TITLE = "Manager";
public void changeValue() {
value = 12; // do tė japė njė gabim
}
}
Metoda final nuk mund tė mbishkruhet nga ndonjė nėnklasė. Siē u pėrmend mė parė, modifikuesi final parandalon njė metodė nga modifikimi i njė nėnklase.
Qėllimi kryesor i bėrjes sė njė metode final ėshtė qė pėrmbajtja e metodės nuk duhet tė ndryshohet nga jashtė kėsaj klase.
ShembullJu deklaroni metodat duke pėrdorur modifikuesin final nė deklarimin e klasės si nė shembullin e mėposhtėm:
public class Test {
public final void changeName() {
// pjesa kryesore e metodės
}
}
Qėllimi kryesor i pėrdorimit tė njė klase tė deklaruar si final ėshtė pėr tė parandaluar njė klasė qė tė bėhet nėnklasė. Nėse njė klasė shėnohet si final atėherė asnjė klasė nuk mund tė trashėgojė tipare nga klasa final.
Shembull:
public final class Test {
// Pjesa kryesore e metodės
}
Modifikuesi Abstract
Klasa AbstractNjė klasė abstract nuk mund tė ilustrohet. Nėse njė klasė ėshtė deklaruar abstract atėherė qėllimi i vetėm i kėsaj klase ėshtė zgjerimi.
Njė klasė nuk mund tė jetė njėkohėsisht abstract dhe final (sepse njė klasė final nuk mund tė zgjerohet). Nėse njė klasė pėrmban metoda abstrakte atėherė klasa duhet tė deklarohet abstract. Pėrveē tė tjerash, njė gabim nė kompilim do tė kapėrcehet.
Njė klasė abstrakte mund ti pėrmbajė tė dyja metodat abstract dhe metodat normale.
Shembull
abstract class Caravan {
private double cmimi;
private String modeli;
private String viti;
public abstract void ecShpejt(); // njė metodė abstract
public abstract void ndryshoNgjyren();
}
Njė metodė abstract ėshtė njė metodė e deklaruar pa ndonjė implementim. Pjesa kryesore e metodės (implementimi) sigurohet nga nėnklasa. Metodat abstract nuk mund tė jenė kurrė final dhe strict.
Njė klasė qė zgjeron njė klasė abstract duhet tė implementojė tė gjitha metodat e abstrakte tė klasės superiore, nėse nėnklasa nuk ėshtė njė klasė abstract.
Nėse njė klasė pėrmban njė ose mė shumė metoda abstract, atėherė klasa duhet tė deklarohet abstract. Njė klasė abstract nuk ka nevojė tė pėrmbajė metoda abstract.
Metoda abstract pėrfundon me njė pikėpresje. Shembull: public abstract shembull();
Shembull
public abstract class SuperClass {
abstract void m(); // metoda abstract
}
class SubClass extends SuperClass {
// implementon metodėn abstract
void m() {
.........
}
}
Modifikuesi Synchronised
Fjala kyēe synchronised pėrdoret pėr tė treguar qė njė metodė mund tė aksesohen vetėm nga njė objekt nė tė njėjtėn kohė. Modifikuesi synchronised mund tė aplikohet nga njėri nga 4 modifikuesit e nivelit tė aksesit.
Shembull
public synchronized void showDetails() {
.......
}
Modifikuesi Tranient
Njė variabėl instance shėnohet transient pėr tė treguar JVM pėr tė kapėrcyer njė variabėl tė veēantė kur serializohet objekti qė e pėrmban.
Ky modifikues pėrfshihet nė deklarimin qė krijon variablin, duke predikuar klasėn ose tipin e tė dhėnės sė variablit.
Shembull
public transient int limit = 55; // nuk do tė vazhdojė
public int b; // do tė vazhdojė
Modifikuesi Volatile
Modifikuesi volatile pėrdoret pėr tė lėnė JVM tė kuptojė se njė objekt qė akseson njė variabėl duhet gjithmonė tė shkrihet me kopjen private tė variablit me kopjen master nė memorie.
Aksesimi i njė variabli volatile sinkronizon tė gjitha kopjet e cashuara tė variablit nė memorien kryesore. Volatile mund tė aplikohet vetėm nė variablat e instancės, tė cilat janė me tipin e objektit ose private. Njė referencė e objektit volatile mund tė jetė null.
Shembull
public class MyRunnable implements Runnable {
private volatile boolean active;
public void run() {
active = true;
while (active) { // linja 1
... // pjesė kodi
}
}
public void stop() {
active = false; // linja 2
}
}
Zakonisht, run() thėrritet nė njė objekt (atė qė ju filloni tė pėrdorni Runnable), dhe stop() thėrritet nga njė objekt tjetėr. Nėse nė linjėn 1, vlera e cashuar e active pėrdoret, cikli mund tė mos ndalojė kur ju e vendosni active si false nė linjėn 2. Ky ėshtė rasti ku mund tė pėrdorni volatile.