public class Main { public static void main(String[] x) { // geht nicht mehr - Frucht ist jetzt abstract //Frucht f = new Frucht(true, 800, 2); //System.out.println("f hat "+f.berechneVitaminC()); Apfel a = new Apfel("Boskop", true, 800, 2); System.out.println("a hat "+a.berechneVitaminC()); Artikel art; a = new Apfel("BioApfel", true, 800, 2); art = a; // Apfel ist ein artikel System.out.println(art.getEAN()+" hat " +a.berechneVitaminC()); // WIR wissen dass in art ein Apfel ist. Der Compiler // weis es nicht. Wir können es im sagen! Apfel c = (Apfel) art; //"explicit CAST", geht gut Banane b = new Banane(true, 1000, 4); art = b; // Banane ist auch ein artikel System.out.println(art.getEAN()+" hat " +b.berechneVitaminC()); // Apfel e = (Apfel) art;// "explicit CAST", geht nicht // Apfel d = (Apfel) new Main(); // kann NIE gehen! // primitive type casts long l = 1000; int i = (int) l; // "explicit downcast" kann gehen long l2 = i; // "implicit upcast" muss immer gehen int q1 = (10/3) * 10; int q2 = (int) (((float)10/3) * 10); int q3 = (int) ((10.0/3) * 10); System.out.println(q1+", "+q2+", "+q3); } }