class Bruch{
 final int zaehler;
 final int nenner;
 
 public Bruch(int z, int n){
 zaehler=z; nenner=n;
 }
 
 public Bruch multipliziere(Bruch b){
 Bruch erg= new Bruch(this.zaehler * b.zaehler,
 this.nenner * b.nenner);
 return erg;
 }
 
 public String toString(){
 return this.zaehler+"/"+this.nenner;
 }
 
 public static void main(String[] args){
 Bruch b1 = new Bruch(3,4);
 Bruch b2 = new Bruch(2,3);
 Bruch b3 ;
 
 b3 = b1.multipliziere(b2);
 System.out.println(b3.toString());
 
 }
 }
interface MitBeinen{
  public int anzahlBeine();
}
abstract class Tier{
  public abstract String nameDerTierart();
}
public class Fisch extends Tier{
   public String nameDerTierart(){
   return "Fisch";
   }
   }
 
public class Spinne extends Tier implements MitBeinen{
  public String nameDerTierart(){
    return "Spinne";
  }
  public int  anzahlBeine(){
    return 8;
  }
}
public class Tisch implements MitBeinen{
  public int  anzahlBeine(){
    return 4;
  }
}
public class BoxIstVollException extends Exception{
   //  BoxIstVollException(){
   //    return "Box ist rappelvoll";
   //  }
 }
public class BoxIstLeerException extends Exception{
//  BoxIstLeerException(){
//    return "Box ist leer"; 
//  }
}
class Box {
  String inhalt;
  
  public void einlagern(String inhalt) throws BoxIstVollException{
    if(this.inhalt != null)
    throw new BoxIstVollException();
    this.inhalt = inhalt;
  }
  
  public String entnehmen() throws BoxIstLeerException{
    if(inhalt == null)
    throw new  BoxIstLeerException();
    String entnommen = inhalt;
    inhalt = null;
    return entnommen;
  }
  
  public static void main(String[] args) {
    Box box = new Box();
    try{
      System.out.println(box.entnehmen());
    }
    catch  (BoxIstLeerException e){
      System.out.println(e);
    }
    try{
      box.einlagern("abc");
    }
    catch  (BoxIstVollException e){
      System.out.println(e);
    }
    
  }
} 
class Tiere{
   
 public enum ZooTier{Tiger, Ente, Schnecke;
 public boolean istGleichschnellWie(ZooTier tier){
 return (this == tier); 
 } 
 public boolean istSchnellerAls(ZooTier tier){
 return (((this == Tiger) && (tier != Tiger))
 | ((this == Ente ) && (tier == Schnecke)));
 }
 public boolean istLangsamerAls(ZooTier tier){
 return ((! this.istGleichschnellWie(tier) )
 & (! this.istSchnellerAls(tier)))  ;
 }
 }
 
 public static void main(String[] args) {
 System.out.println(ZooTier.Tiger.istGleichschnellWie(ZooTier.Tiger)); // true
 System.out.println(ZooTier.Ente.istSchnellerAls(ZooTier.Schnecke));  //true
 System.out.println(ZooTier.Schnecke.istLangsamerAls(ZooTier.Schnecke)); // false
 } 
 }
Mit Hilfe der Ordnungszahlen
class TiereOrd{
  
  public enum ZooTier{Tiger, Ente, Schnecke;
    public boolean istGleichschnellWie(ZooTier tier){
      return (this == tier); 
    }  
    public boolean istSchnellerAls(ZooTier tier){
      return (this.ordinal() < tier.ordinal());
    }
    public boolean istLangsamerAls(ZooTier tier){
      return (this.ordinal() > tier.ordinal());
    }
  }
  
  
  public static void main(String[] args) {
    System.out.println(ZooTier.Tiger.ordinal());
    System.out.println(ZooTier.Tiger.istGleichschnellWie(ZooTier.Tiger)); // true
    System.out.println(ZooTier.Ente.istSchnellerAls(ZooTier.Schnecke));  //true
    System.out.println(ZooTier.Schnecke.istLangsamerAls(ZooTier.Schnecke)); // false
  } 
}
class Cd {}
class  Wiedergabegeraet<P> {
 P medium; 
 public void mediumEinlegen(P med) {
 medium = med;
 System.out.println(medium);
 }
 public P mediumEntnehmen(){
 P tmp= medium;
 System.out.println(medium);
 medium = null;
 return tmp;
 }
 }
public class WiedergabegeraetDemo {
 public static void main(String[] args) {
 Wiedergabegeraet<Cd> player = new Wiedergabegeraet<Cd>();
 Cd cd = new Cd();
 player.mediumEinlegen(cd);
 Cd medium = player.mediumEntnehmen();
 }
 }
interface Hoerbar{
 void liedSpielen(int liedNr);
 int anzahlLieder();
 }
class Cd implements Hoerbar {
  public void liedSpielen(int liedNr) { 
    
  }
  public int anzahlLieder(){
    return 42; 
  }
}
class  Wiedergabegeraet<P extends Hoerbar> {
  P medium; 
  public void mediumEinlegen(P med) {
    medium = med;
    System.out.println(medium);
  }
  public P mediumEntnehmen(){
    P tmp= medium;
    System.out.println(medium);
    medium = null;
    return tmp;
  }
  public void alleSpielen(){
    for (int i=0;i<medium.anzahlLieder() ; i++) {
      medium.liedSpielen(i);
    } // end of for
  }
}
public class WiedergabegeraetDemo {
  public static void main(String[] args) {
    Wiedergabegeraet<Cd> player = new Wiedergabegeraet<Cd>();
    Cd cd = new Cd();
    player.mediumEinlegen(cd);
    player.alleSpielen();
    Cd medium = player.mediumEntnehmen();
  }
}
import java.util.ArrayList;
   import java.util.Iterator;
   import java.util.List;
   public class SchleifenDemo {
 public static void main(String[] args) {
 List<String> eineListe = new ArrayList<String>();
 eineListe.add("Alle");
 eineListe.add("meine");
 eineListe.add("Entchen");
 eineListe.add("...");
 schreiben(eineListe);
 }
 static void schreiben(List<String> liste) {
 // for-Schleife mit indiziertem Zugriff auf die Elemente.
 for (int i=0;i<liste.size() ; i++) {
 System.out.print(liste.get(i)+" ");
 } // end of for
 System.out.println();
 
 // for-Schleife, die Iterable<String> ausnutzt.
 Iterator it= liste.listIterator();
 for (it = liste.listIterator(0); it.hasNext(); ) {
 System.out.print(it.next()+" ");
 } // end of for
 System.out.println();
 
 // for-Schleife, die Iterable<String> ausnutzt mit for-each
 for (String s : liste ) {
 System.out.print(s+" ");
 } // end of for
 System.out.println();
 
 // while-Schleife mit indiziertem Zugriff auf die Elemente.
 int i=0;
 while (i<liste.size()) { 
 System.out.print(liste.get(i)+" ");
 i++;
 } // end of while
 
 System.out.println();
 // while-Schleife, die Iterable<String> ausnutzt.
 it= liste.listIterator();
 while (it.hasNext()) { 
 System.out.print(it.next()+" ");
 } // end of while
 
 }
 }
Geben Sie eine alternative Implementierung an, die dieses Problem vermeidet.
public synchronized Object entnehmen() { 
  Object letztes = gegenstaende.getLast(); 
  gegenstaende.removeLast(); 
  return letztes; 
}
public class Fuhrpark {
public static void main(String[]  args) {
LKW lkw = new Sattelschlepper();
PKW pkw1 = new PKW();
PKW pkw2 = new Kleinwagen();
Kombi kombi = new Kombi();
Sattelschlepper sattelschlepper = new Sattelschlepper();
Super sup1 = new Super();
Super sup2 = new Sub();
sup1.m(pkw2, lkw);
sup1.m(pkw1, sattelschlepper);
sup1.m(kombi, pkw2);
sup2.m(pkw1, lkw);
sup2.m(pkw1, sattelschlepper);
}
}
class Super {
public void m(Fahrzeug t, LKW f) {
System.out.println("1");
}
public void m(Fahrzeug t1, Fahrzeug  t2) {
System.out.println("2");
}
}
class Sub extends Super {
public void m(PKW v, LKW f) {
System.out.println("3");
}
public void m(Fahrzeug t1, LKW t2) {
System.out.println("4");
}
}
class Fahrzeug {}
class LKW extends Fahrzeug {}
class Sattelschlepper extends LKW {}
class PKW extends Fahrzeug {}
class Kombi extends PKW {}
class Kleinwagen extends PKW {}
sup1.m(pkw2, lkw);
  Ausgabe 1
  erste Methode spezieller als 2. Methode
sup1.m(pkw1, sattelschlepper); 
  Ausgabe 1
  erste Methode spezieller als 2. Methode
sup1.m(kombi, pkw2);
  Ausgabe 2
  nur 2. Methode passt
sup2.m(pkw1, lkw);
  Ausgabe 4
  In Super ist es Methode 1, 
  aber die wird in SUb durch Methode 4 überschrieben
sup2.m(pkw1, sattelschlepper);
  Ausgabe 4
  In Super ist es Methode 1, 
  aber die wird in SUb durch Methode 4 überschrieben
a.m(o1); Ausgabe B.m(Object o)
a.m(o2); Ausgabe B.m(Object o)
a.m(d); Ausgabe B.m(Object o)
a.m(s); Ausgabe B.m(String s)