//Titel:            Testbeispiel für Interface-Technik
//Version:          1.0
//Copyright:        HS-Harz, FB AI
//Autor:            Dipl.-Inf. Dipl.-Ing. (FH) Michael Wilhelm
//Firma:
//Beschreibung:


// Interface Beispiel

import java.awt.*;
import java.awt.event.*;

import java.io.*;

import java.util.Vector;






public class interface2 {



   private static void pause() {
    try {
      System.in.read();
    }
    catch (IOException e) {
    }
  }  // pause

  void test1(){
    fahrzeug f;
    f = new fahrzeug(12);
    System.out.println( f.ps );

    pkw p;
    p = new pkw(12,"rot");
    System.out.println( p.ps );
    System.out.println( p.farbe );

    lkw l;
    l = new lkw(112,1234);
    System.out.println( l.ps );
    System.out.println( l.volumen );

    fahrzeug ff = l;
    System.out.println( ff.ps );

    l=(lkw)ff;
    l.print();
    System.out.println( l.volumen );
  } // test1

  void test2(){
    fahrzeug f1 = new fahrzeug(122);
    fahrzeug f2 = new fahrzeug(132);
    fahrzeug f3 = new fahrzeug(142);
    fahrzeug f4 = new fahrzeug(125);
    System.out.println( f1.ps );

    pkw p1 = new pkw(12,"rot");
    pkw p2 = new pkw(122,"blau");

    schiff s1= new schiff(12345);
    s1.print();

    Iprint feld[] = new Iprint[7];
    feld[0] = f1;
    feld[1] = f2;
    feld[2] = f3;
    feld[3] = f4;
    feld[4] = p1;
    feld[5] = p2;
    feld[6] = s1;

    for (int i=0; i<7; i++) {
      feld[i].print();

    }
    pkw p3 = (pkw) feld[5];
    p3.print();


  }

    // MAIN
  static public void main(String[] args) {
     interface2 f=new interface2();
     f.test2();
    pause();
  }

}


interface Iprint   {
  public void print();
}



class fahrzeug implements Iprint {
  int ps;

  public void print() {
    System.out.println( "Ps: "+ps );
  }

  public fahrzeug(int ps)  {
    this.ps = ps;
  }

} // fahrzeug
class pkw extends fahrzeug {
  String farbe;

  public pkw(int ps, String farbe)  {
    super(ps);
    this.farbe=farbe;
  }

  public void print() {
    System.out.println( "Ps: "+ps+  "farbe: "+farbe );
  }


} // pkw
class lkw extends fahrzeug {
  int volumen;

  public lkw(int ps, int volumen)  {
    super(ps);
    this.volumen=volumen;
  }
  public void print() {
    System.out.println( "Ps: "+ps+  "vol: "+volumen );
  }


} // lkw


class schiff implements Iprint{
  int passagiere;

  public void print() {
    System.out.println("passagiere: "+passagiere);
  }

  public schiff (int passagiere) {
     this.passagiere = passagiere;
  }

} // fahrzeug

