Ez az oldal tartalmazza az Interfészek című fejezethez tartozó példákat.
Comparable interfész deklarációja
A Comparable interfész deklarációja a
java.lang csomagból.
public interface Comparable {
public int compareTo(Object o);
}
A teljes program: Comparable.java
|
Comparable interfész használata
A Rendez osztály Comparable típusú
elemek tömbjét várja paraméterként és rendezi azokat.
class Rendez {
public static void rendez(Comparable[] elemek) {
for(int i=0;i < elemek.length;++i)
for(int j=i+1;j < elemek.length;++j)
if( elemek[i].compareTo(elemek[j]) < 0 ) {
Comparable tmp=elemek[i];
elemek[i]=elemek[j];
elemek[j]=tmp;
}
}
}
A teljes program: RendezesTeszt.java
|
Comparable interfész megvalósítása
A DatumRendez osztály megvalósítja a Comparable
interfészt dátumok összehasonlítására használva.
class DatumRendez extends java.util.GregorianCalendar
implements Comparable {
public DatumRendez(int y,int m,int d) {
super(y,m,d);
}
public int compareTo(Object s) {
if( s instanceof DatumRendez ) {
if( this.before((DatumRendez)s) ) return -1;
else if( this.after((DatumRendez)s) ) return 1;
else return 0;
}
else {
throw new ClassCastException(s.toString());
}
}
public String toString() {
return get(YEAR)+":"+get(MONTH)+":"+get(DAY_OF_MONTH);
}
}
A teljes program: RendezesTeszt.java
|
DatumRendez osztály felhasználása
A RendezesTeszt osztály DatumRendez
típusú objektumokat használ fel a rendezésben.
public class RendezesTeszt {
public static void main(String args[]) {
DatumRendez[] is=new DatumRendez[4];
is[0]=new DatumRendez(74,3,30);
is[1]=new DatumRendez(97,2,6);
is[2]=new DatumRendez(96,11,24);
is[3]=new DatumRendez(84,0,1);
try {
Rendez.rendez(is);
}
catch(ClassCastException ce) {
System.out.println("Nem megfelelô típus a rendezéshez: " + ce);
}
for(int i=0;i < is.length;++i)
System.out.println(is[i]);
}
}
A teljes program: RendezesTeszt.java
|
Egy üres interfész, illetve egy konstanst és egy absztrakt
metódust tartalmazó interfész deklarációja.
interface Savanyú { }
public interface Gyumolcs {
int ÍZ = 1;
void egyedMeg();
}
A teljes program: Gyumolcs.java
|
A korábban definiált interész kiterjesztése.
interface Alma extends Gyumolcs {
int SZÍN = 2;
int milyenSzínű();
}
A teljes program: interfesz1.java
|
A Narancs interfész leszármazottja a
Gyumolcs és a Savanyú interfészeknek is.
interface Narancs extends Gyumolcs, Savanyú {
int MÉRET = 1;
}
A teljes program: interfesz2.java
|
Az itt definiált interfészek nem csak az extends kulcsszó
mögött álló interfészeket terjesztik ki, hanem azok őseit is.
interface Jonatan extends Alma { }
interface Starking extends Alma { }
interface VérNarancs extends Narancs { }
A teljes program: interfesz3.java
|
A Golden az Alma interfésszel együtt
annak őseit is implementálja.
class Golden implements Alma {
public void egyedMeg() { /*...*/ }
public int milyenSzínű() { /*...*/ }
//...
}
A teljes program: interfesz4.java
|
Konstansok deklarációja a szükséges kezdeti értékadással.
interface Alma {
boolean B = false;
char []C = {'j','o','n','a','t','a','n'};
int I = 1;
}
A teljes program: interfesz5.java
|
A konstans kezdeti értékének egy már ismert értéknek kell lennie.
interface Alma {
float F = J; //hibás!!!
int J = 1;
float H = J;
int K = K+1; //hibás!!!
}
A teljes program: interfesz6.java
|
Az Alma interfész FAJTÁK konstansa
elfedi a Gyumolcs FAJTÁK konstansát.
interface Gyumolcs {
int FAJTÁK = 10;
}
interface Alma extends Gyumolcs {
int FAJTÁK = 6;
}
A teljes program: interfesz7.java
|
A KedvencGyumolcs több úton örökli a
NARANCS konstansot, amire
hivatkozva fordítási hiba lép fel.
interface Gyumolcs {
int ALMA = 1, KÖRTE = 2, BARACK = 3;
}
interface DeliGyumolcs extends Gyumolcs {
int BANÁN = 4, NARANCS = 5;
}
interface KerekGyumolcs extends Gyumolcs {
int NARANCS = 8, DINNYE = 16;
}
interface KedvencGyumolcs extends DeliGyumolcs, KerekGyumolcs {
int SZILVA = 10;
}
A teljes program: interfesz8.java
|
Példa egyszerű metódusdeklarációra.
interface Alma {
void egyedMeg(int i,boolean b);
int mosdMeg(char c) throws Exception;
}
A teljes program: interfesz9.java
|
A Gyumolcs interfész által deklarált egyedMeg metódus átdefiniálja az
Alma és a Korte hasonló paraméterekkel
rendelkező metódusait, de a Korte int-et tartalmazó és
ezért eltérő szignatúrájú metódusát örökli.
interface Alma {
void egyedMeg(boolean bx, boolean by) throws Exception;
}
interface Korte {
void egyedMeg(boolean bx, boolean by) throws Exception;
void egyedMeg(boolean bx, int iy);
}
interface Gyumolcs extends Alma, Korte {
void egyedMeg(boolean cx, boolean cy) throws Exception;
}
A teljes program: interfesz10.java
|
A Gyumolcs interfész által kiterjesztett Alma és Korte
interfészekből a két egyedMeg metódus helyesen öröklődik. Ha valamelyik
visszatérési típus megváltozna, az fordítási hibát okozna.
interface Alma {
void egyedMeg(boolean bx, boolean by);
}
interface Korte {
void egyedMeg(boolean bx, boolean by) throws Exception;
}
interface Gyumolcs extends Alma, Korte {
}
A teljes program: interfesz11.java
|
A Jonatan interfésznek három egyedMeg metódusa
lesz, de az eltérő szignatúra miatt a metódusok különböznek.
interface Alma {
void egyedMeg(boolean bx, boolean by);
}
interface Jonatan extends Alma {
void egyedMeg(char cx, char cy) throws Exception;
int egyedMeg(int ix, int iy);
}
A teljes program: interfesz12.java
|
Interfészek használatának elemei a következők: interfész
deklarálása, implementálása, interfész használata deklarációban,
és egy implementáló osztálybeli objektum felhasználása a deklaráció helyén.
interface Gyumolcs {
void egyedMeg(int i);
}
interface Alma extends Gyumolcs{
int színe();
void színÁllít(int i);
}
interface Korte {
int mérete();
void méretÁllít(int i);
}
class Jonatan implements Alma {
int szín;
public void színÁllít(int i) { szín=i; }
public int színe() { return szín; }
public void egyedMeg(int i) {
System.out.println("Finom volt");
}
}
class VilmosKorte implements Korte {
int méret;
public void méretÁllít(int i) { méret=i; }
public int mérete() { return méret; }
}
public class Teszt {
public static void main(String args[]){
Alma b;
b=new Jonatan();
b.színÁllít(5);
System.out.println(b.színe());
b.egyedMeg(3);
}
}
A teljes program: Teszt.java
|