Egy osztály, amely egy alkalmazottat modellez, akinek neve
és fizetése van, és egyetlen művelete a fizetésemelés.
public class Alkalmazott {
String nev;
int fizetes;
void fizetestEmel(int novekmeny) {
fizetes += novekmeny;
}
}
A teljes program:
Alkalmazott.java
|
Egy kódtöredék, amely definiál egy Alkalmazott típusú lokális változót, létrehoz egy új példányt, értékadással nevet és fizetést ad neki, s végül fizetésemeléssel jutalmazza.
Alkalmazott a; a = new Alkalmazott(); a.nev = "Kovács János"; a.fizetes = 50000; a.fizetestEmel(6300);A teljes program: Pelda1.java |
Három egész típusú változó deklarációja.
int fizetes, potlekok, levonasok;A teljes program: Pelda2.java |
Deklaráció, amely megadja az első és a harmadik változó kezdőértékét.
int fizetes = 30000, potlekok, levonasok = fizetes/4;A teljes program: Pelda3.java |
Konstans deklarációja.
final double ADOKULCS = 25;A teljes program: Pelda3.java |
Az aktuális példány, illetve más példány változójának hivatkozása.
public class Alkalmazott {
...
boolean tobbetKeresMint(Alkalmazott masik) {
return fizetes > masik.fizetes;
}
}
A teljes program:
Alkalmazott.java
|
Egy logikai értéket visszaadó metódus, amely megmondja egy alkalmazottról, hogy annak jövedelme közepes-e. A közepesnek tekintett jövedelemsáv alsó és felső határát paraméterként adjuk át a metódusnak.
boolean kozepesJovedelmu(int minimum, int maximum) {
return minimum <= fizetes && fizetes <= maximum;
}
A teljes program:
Alkalmazott.java
|
Paraméter nélküli metódus, amely megduplázza az alkalmazott fizetését.
void fizetestDuplaz() {
fizetes *= 2;
}
A teljes program:
Alkalmazott.java
|
Metódus meghívása adott objektumra.
Alkalmazott a; ... a.fizetestDuplaz();A teljes program: Pelda1.java |
Az előző példában szereplő metódushívással azonos hatású kód.
a.fizetes *= 2;A teljes program: Pelda1.java |
Metódus meghívása az aktuális példányra.
void automatikusFizetesEmeles() {
if (kozepesJovedelmu(30000, 60000))
fizetestEmel(5000);
}
A teljes program:
Alkalmazott.java
|
Visszatérési értékkel bíró metódus használata kifejezésben.
Alkalmazott a; int levonas; ... levonas = a.szja() + a.tb();A teljes program: Pelda2.java |
this peszeudováltozó
A this pszeudováltozó használata.
boolean kevesebbetKeresMint(Alkalmazott masik) {
return masik.tobbetKeresMint(this);
}
A teljes program:
Alkalmazott.java
|
Három különböző metódus azonos néven.
public class Alkalmazott {
...
void fizetestEmel(int novekmeny) {
fizetes += novekmeny;
}
void fizetestEmel() {
fizetes += 5000;
}
void fizetestEmel(Alkalmazott masik) {
if (kevesebbetKeresMint(masik))
fizetes = masik.fizetes;
}
...
}
A teljes program:
Alkalmazott.java
|
Túlterhelt nevű metódusok hívása: a hívások rendre az első, a második
és a harmadik fizetestEmel metódust hívják meg az előző
példából.
Alkalmazott a = new Alkalmazott(), b = new Alkalmazott(); ... a.fizetestEmel(5000); a.fizetestEmel(); a.fizetestEmel(b);A teljes program: Pelda3.java |
Példányosítás.
Alkalmazott a = new Alkalmazott();A teljes program: Pelda4.java |
Konstans referencia: mindig ugyanarra az objektumra mutat.
final Alkalmazott A = new Alkalmazott();
...
void proba() {
A = new Alkalmazott(); // NEM LEHET!!!
A.fizetes = 35000; // lehet
}
A teljes program (fordításnál hibaüzenetet ad):
Pelda5.java
|
Több változó is hivatkozat ugyanarra az objektumra.
Alkalmazott a, b; a = new Alkalmazott(); b = a; a.fizetes = 50000;A teljes program: Pelda6.java |
Két változó, amelyek értéke egymással összefügg (evesFizetes =
12 * fizetes).
public class Alkalmazott {
...
int fizetes;
int evesFizetes;
...
}
A teljes program:
Alkalmazott.java
|
Értéket beállító metódus, amely biztosítja az előző példában szereplő
változók közötti összefüggést.
public class Alkalmazott {
...
void ujFizetes(int osszeg) {
fizetes = osszeg;
evesFizetes = 12*osszeg;
}
}
A teljes program:
Alkalmazott.java
|
Nyilvános metódusok.
public class Alkalmazott {
...
public int fizetes() {
return fizetes;
}
public int evesFizetes() {
return evesFizetes;
}
...
}
A teljes program:
Alkalmazott.java
|
Privát változók félnyilvános beállító és nyilvános lekérdező
metódusokkal.
public class Alkalmazott {
private int fizetes;
private int evesFizetes;
...
void ujFizetes(int osszeg) {
fizetes = osszeg;
evesFizetes = 12*osszeg;
}
public int fizetes() {
return fizetes;
}
public int evesFizetes() {
return evesFizetes;
}
...
}
A teljes program:
Alkalmazott.java
|
Nyugdíjkorhatárt rögzítő osztályváltozó.
public class Alkalmazott {
...
static int nyugdijKorhatar = 60; // általános nyugdíjkorhatár
int eletkor; // életkor személyenként
....
int hatraVan() { // ennyi évet kell meg dolgozni
return nyugdijKorhatar - eletkor;
}
}
A teljes program:
Alkalmazott.java
|
Osztályváltozó elérése objektumon és osztályon keresztül.
Alkalmazott a = new Alkalmazott(); ... a.nyugdijKorhatar = 65; // ez ugyanazt jelenti, Alkalmazott.nyugdijKorhatar = 65; // mint ezA teljes program: Pelda1.java |
Példányait sorszámozó osztály.
public class Szamozott {
private static int kovSzam = 1;
public final int SZAM = kovSzam++;
}
A teljes program:
Szamozott.java
|
Nyugdíjkorhatárt emelő osztálymetódus.
public class Alkalmazott {
...
static void nyugdijKorhatartEmel() {
nyugdijKorhatar++;
}
}
A teljes program:
Alkalmazott.java
|
Osztálymetódus hívása objektumon és osztályon keresztül.
Alkalmazott a = new Alkalmazott(); ... a.nyugdijKorhatartEmel(); Alkalmazott.nyugdijKorhatartEmel();A teljes program: Pelda2.java |
Indító métódus a magyarított Hello World programban.
public class Haliho {
public static void main(String[] args) {
System.out.println("Haliho, emberek!");
}
}
A teljes program:
Haliho.java
|
A program futása az System.exit metódussal fejezhető be.
System.exit(0);A teljes program: Exit.java |
Argumentumait kiíró program.
public class ArgumentumKiiro {
public static void main(String[] args) {
if (args.length > 0) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
} else {
System.out.println("nincsenek argumentumok");
}
}
}
A teljes program:
ArgumentumKiiro.java
|
Konstruktorok az Alkalmazott osztályhoz.
public class Alkalmazott {
...
public Alkalmazott(String nev, int fizetes) {
this.nev = nev;
this.fizetes = fizetes;
this.evesFizetes = 12*fizetes;
}
public Alkalmazott(String nev) {
this.nev = nev;
this.fizetes = 40000;
this.evesFizetes = 12*fizetes;
}
...
}
A teljes program:
Alkalmazott.java
|
Konstruktor meghívása másik konstruktor kezdőutasításaként.
public Alkalmazott(String nev) {
this(nev,40000);
}
A teljes program:
Alkalmazott.java
|
Az Alkalmazott osztály példányosítása különböző
konstruktorokkal.
Alkalmazott a = new Alkalmazott("Kovács János");
Alkalmazott b = new Alkalmazott("Szabó József", 50000);
A teljes program:
Pelda1.java
|
Statikus tömböt feltöltő statikus inicializáló blokk.
public class Alkalmazott {
...
static int[] evesSzabadsag = new int [60];
static {
for (int i = 0; i < 30; i++)
evesSzabadsag[i] = 15;
for (int i = 30; i < 40; i++)
evesSzabadsag[i] = evesSzabadsag[i-1] + 1;
for (int i = 40; i < 50; i++)
evesSzabadsag[i] = evesSzabadsag[i-1] + 2;
for (int i = 50; i < 60; i++)
evesSzabadsag[i] = evesSzabadsag[i-1] + 1;
}
...
public int evesSzabadsag() {
if (eletkor < 60)
return evesSzabadsag[eletkor];
else
return evesSzabadsag[59];
}
}
A teljes program:
Alkalmazott.java
|
Példány tárterületének újrafelhasználása előtt meghívódó metódus.
protected void finalize() throws Throwable {
...
}
A teljes program:
Finalize.java
|
Osztály törlése előtt meghívódó metódus.
static void classFinalize() throws Throwable {
...
}
A teljes program:
Finalize.java
|
Az Alkalmazott osztály kiegészítése Fonok
osztállyá.
public class Fonok extends Alkalmazott {
final int MAXBEOSZT = 20;
Alkalmazott[] beosztottak = new Alkalmazott[MAXBEOSZT];
int beosztottakSzama = 0;
public void ujBeosztott(Alkalmazott b) {
beosztottak[beosztottakSzama++] = b;
}
}
A teljes program:
Fonok.java
|
Szülőosztály konstruktorának hívása a konstruktor első utasításaként.
public class Fonok extends Alkalmazott {
...
public Fonok(String nev, int fizetes) {
super(nev, fizetes);
}
public Fonok(String nev) {
this(nev, 100000);
}
}
A teljes program:
Fonok.java
|
A Fonok osztály felüldefiniálja az Alkalmazott
osztály potlek metódusát.
public class Alkalmazott {
...
int nyelvekSzama;
...
public int potlek() {
return nyelvekSzama*5000;
}
public int fizetesPotlekokkal() {
return fizetes() + potlek();
}
}
public class Fonok extends Alkalmazott {
...
public int potlek() {
return super.potlek() + beosztottakSzama*1000;
}
}
A teljes program:
Alkalmazott.java,
Fonok.java
|
Metódus hívása dinamikus összekapcsolással.
Alkalmazott a = new Fonok("Kovács Gyula");
int p, fp;
...
p = a.potlek();
fp = a.fizetesPotlekokkal();
A teljes program:
Pelda2.java
|
void m(Alkalmazott a1, Alkalmazott a2) { ... }
void m(Alkalmazott a, Fonok f) { ... }
void m(Fonok f, Alkalmazott a) { ... }
...
Alkalmazott a = new Alkalmazott("Pista");
Alkalmazott af = new Fonok("Jóska");
Fonok f = new Fonok("Géza");
m(a,a); // m(Alkalmazott,Alkalmazott)
m(a,af); // m(Alkalmazott,Alkalmazott)
m(a,f); // m(Alkalmazott,Fonok)
m(f,f); // fordítási hiba
m(f,(Alkalmazott)f) // m(Fonok,Alkalmazott)
A teljes program (fordításnál hibaüzenetet ad):
Tulterheles.java
|
protected hozzáférési kategória
Absztrakt síkidom osztály.
public abstract class Sikidom {
private boolean keruletKiszamitva = false;
private boolean teruletKiszamitva = false;
private double kerulet;
private double terulet;
public double kerulet() {
if (!keruletKiszamitva) {
kerulet = keruletSzamit();
keruletKiszamitva = true;
}
return kerulet;
}
public double terulet() {
if (!teruletKiszamitva) {
terulet = teruletSzamit();
teruletKiszamitva = true;
}
return terulet;
}
protected abstract double keruletSzamit();
protected abstract double teruletSzamit();
}
A teljes program:
Sikidom.java
|
Az absztrakt Sikidom osztály konkrét kiterjesztései.
public class Teglalap extends Sikidom {
private double a, b;
public Teglalap (double a, double b) {
this.a = a;
this.b = b;
}
public double a () {
return a;
}
public double b () {
return b;
}
protected double keruletSzamit () {
return 2*(a+b);
}
protected double teruletSzamit () {
return a*b;
}
}
public class Kor extends Sikidom {
private double r;
public Kor (double r) {
this.r = r;
}
public double r () {
return r;
}
protected double keruletSzamit() {
return 2*Math.PI*r;
}
protected double teruletSzamit() {
return r*r*Math.PI;
}
}
A teljes program:
Teglalap.java,
Kor.java
|
Az Object osztály nem engedi meg a getClass
metódus felüldefiniálását.
public class Object {
public final Class getClass();
...
}
A teljes program: lásd az osztálykönyvtár forráskódját.
|
A System osztály nem engedi meg, hogy kiterjesszék.
public final class System {
...
}
A teljes program: lásd az osztálykönyvtár forráskódját.
|