Gyakorlati alapok III.
Az interfész implementálásának szabályai
Ismételjük meg az előző fejezet komplex példakódját:
import
java.math.*;
public interface IKorTulajdonsagok {
double PI = Math.PI;
int korSzam = 10;
double korTerulet(int sugar, double PI);
}
public class KorTeruletOsszegzo implements IKorTulajdonsagok{
KorTeruletOsszegzo(){
System.out.println(osszegzo());
};
@Override
public double korTerulet(int sugar, double PI){
return (sugar * sugar) * PI;
}
public double osszegzo(){
double korTeruletOsszeg = 0;
for(int i = 1; i <= korSzam; i++){
int sugar = i;
korTeruletOsszeg += korTerulet(sugar,
PI);
System.out.println(sugar + " egység
sugarú kör területe: " + korTerulet(sugar, PI));
}
System.out.print("Körterületek összege: " + korTeruletOsszeg);
return korTeruletOsszeg;
}
}
public class KorTeruletAtlagolo implements IKorTulajdonsagok{
KorTeruletAtlagolo(){
System.out.println(atlagolo());
};
@Override
public double korTerulet(int sugar, double PI){
return (sugar * sugar) * PI;
}
public double atlagolo(){
double korTeruletOsszeg = 0;
for(int i = 1; i <= korSzam; i++){
int sugar = i;
korTeruletOsszeg += korTerulet(sugar,
PI);
System.out.println(sugar + " egység
sugarú kör területe: " + korTerulet(sugar, PI));
}
System.out.print("Körterületek átlaga: " + korTeruletOsszeg /
korSzam);
return korTeruletOsszeg / korSzam;
}
}
public class Main {
public static void main(String[] args) {
new KorTeruletOsszegzo();
System.out.println();
new KorTeruletAtlagolo();
}
}
Végeredmény:
1 egység sugarú kör területe: 3.141592653589793
2 egység sugarú kör területe: 12.566370614359172
3 egység sugarú kör területe: 28.274333882308138
4 egység sugarú kör területe: 50.26548245743669
5 egység sugarú kör területe: 78.53981633974483
6 egység sugarú kör területe: 113.09733552923255
7 egység sugarú kör területe: 153.93804002589985
8 egység sugarú kör területe: 201.06192982974676
9 egység sugarú kör területe: 254.46900494077323
10 egység sugarú kör területe: 314.1592653589793
Körterületek összege: 1209.51317163207051209.5131716320705
1 egység sugarú kör területe: 3.141592653589793
2 egység sugarú kör területe: 12.566370614359172
3 egység sugarú kör területe: 28.274333882308138
4 egység sugarú kör területe: 50.26548245743669
5 egység sugarú kör területe: 78.53981633974483
6 egység sugarú kör területe: 113.09733552923255
7 egység sugarú kör területe: 153.93804002589985
8 egység sugarú kör területe: 201.06192982974676
9 egység sugarú kör területe: 254.46900494077323
10 egység sugarú kör területe: 314.1592653589793
Körterületek átlaga: 120.95131716320705120.95131716320705
A kód tanulmányozásával felfedezhetjük, illetve ellenőrizhetjük az interfész implementálásának szabályait:
-
az implementáló osztályban az összes metódusfejet ki kell dolgozni, másként fordítási hibával szembesülünk,
-
ha az implementáló osztály abstract, akkor annak utódjában kell kidolgoznunk az interfészben megadott metódusfejeket,
-
osztály elméletileg bármennyi interfészt implementálhat, ám ekkor is igaz a fenti szabály, miszerint implementáló osztályban az összes metódusfejet ki kell dolgozni,
-
az interfészben definiált konstansok az osztály statikus konstansaikként viselkednek: rájuk közvetlenül, minden minősítés nélkül hivatkozhatunk, például a fenti kódban PI és korSzam IKorTulajdonsagok.PI és IKorTulajdonsagok.korSzam helyett,
-
konstansok minősítése megváltoztathatlanul public, static, final.