Interface |
|
Wenn also mehrere Klassen ein und daselbe interface implementieren, dann besitzen sie alle die Methoden aus dem interface, und können diese bei Bedarf unterschiedlich implementieren.
Aus diesem Grund wird man als erstes das Interface folgendermassen definieren:
public interface Geom
{
public double flaeche();
public double umfang();
}
Die Leistung des interface ist: alle btr. Klassen haben
Die Klassen, welche diese Schnittstelle implementieren, werden gekennzeichnet durch das Schlüsselwort implements:
public class Ellipse extends Kreis implements Geom
{
//Def. der Klasse Ellipse,
//im folgenden nicht ausgeführt
}
Damit hat diese Klasse die Verpflichtung, die Methoden des interface zu definieren.
Kreis.java
public class Kreis implements Geom
{
private double radius;
public void setzeRadius( double rad ){
radius = rad ;
}
public double flaeche(){
return Math.PI * radius * radius;
}
public double leseRadius(){
return radius;
}
public double umfang(){
return 2*Math.PI*radius;
}
}
Rechteck.java
public class Rechteck implements Geom
{
private double lang, breit;
public void setLang( double lang ){
this.lang = lang;
}
public void setBreit( double b ){
breit = b;
}
public double getLang(){
return lang;
}
public double getBreit(){
return breit;
}
public double flaeche(){
return lang*breit;
}
public double umfang(){
return 2*(lang+breit);
}
}
Somit ist sichergestellt, dass alle Objekte der Klassen Kreis und Rechteck ihre jeweiligen Flächen und Umfänge berechnen können.
Interessant ist dies vor allem für andere Klassen, die ihrerseits Kreis- oder Rechteck-Objekte benutzen.
flaechenBedarf( Geom teil )gesamtUmfang( Geom teil )Materialbedarf.java
public class MaterialBedarf
{
public static double flaechenBedarf( Geom teil ){
return teil.flaeche();
}
public static double gesamtUmfang( Geom teil ){
return teil.umfang();
}
static public void main(String[] args )
{
Kreis kreis1 = new Kreis();
kreis1.setzeRadius( 123.0 );
Rechteck recht1 = new Rechteck();
recht1.setLang( 12.0 );
recht1.setBreit( 34.0 );
System.out.println( "Kreis-Flaeche: "
+ flaechenBedarf( kreis1 ));
System.out.println( "Kreis-Umfang: "
+ gesamtUmfang( kreis1 ));
System.out.println( "Rechteck-Flaeche: "
+ flaechenBedarf( recht1 ));
System.out.println( "Rechteck-Umfang: "
+ gesamtUmfang( recht1 ));
}
}
Das Programm bringt folgenden output:
F:>java MaterialBedarf Kreis-Flaeche: 47529.15525615998 Kreis-Umfang: 772.8317927830891 Rechteck-Flaeche: 408.0 Rechteck-Umfang: 92.0Mehr: Ausführliches Interface-Bsp.