/media/sda-magnetic/david/Dokumente-15/fernuni-hagen/cs-i-ii/old-cs-2-03/java-new/java-2020-10-26-before/CarProg.java


public class CarProg {

    public static void main (String [] args) {
        CarFactory cf = new CarFactory();
        RealCar rc = new RealCar (20000);
        System.out.println (rc.readMotorPowerInKiloWatt());
        rc.tunePower();
        /* Also in diesem Fall geht tunePower(). Ich vermute aber, was Sie meinen ist: Das Problem ist, dass Sie aus einem statischen Kontext heraus, keine nicht statischen Methoden aufrufen können. Diese Fehlermeldung bringt mein Compiler ständig - weil bei mir public static void main(...) steht. Und so, wie Sie sehen, habe ich aus der Klasse CarFactory eine statische gemacht und aus der Klasse RealCar, damit ich den Konstruktur aufrufen kann. Ich vermute was Sie meinen, entsteht eben aus diesem Hintergrund heraus */
        
    }

    interface Car {
        String readMotorPowerInKiloWatt();
    }

    static class RealCar implements Car {
        private double power;
    
        public RealCar(double power) {
            this.power = power;
        }
    
        public String readMotorPowerInKiloWatt() {
            return "Car: My power is " + power + " KW!";
        }

        // Methode zum Tunen des Autos
        public void tunePower() {
            power = power * 1.2;
        }
    }

    public static class CarFactory {
        public Car giveMeACar() {
            return new RealCar(98);
        }
        public CarFactory () {}
    }
}