# Instanz einer Interface abgeleiteten Klasse erzeugen



## Tetronic (7. Feb 2007)

Hallo!

Ich habe ein folgendes Problem:

Ich habe ein Interface:


```
interface E {
  double next();
}
```
und drei Klassen, die dieses Interface implementieren:


```
public class F implements E {

private double value;

public F() { this(0); }

public F(double value) { this.value = value;}

public double next() {return value;}

}
```



```
public class G implements E {

private double cnt;

public G() { this(0); }

public G(double start) {cnt = start;}

public double next() {return cnt++;}

}
```


```
class S implements E {
      private double factor;
      private E es;
 
      S (E es; double factor) {
            this.es = s;
            this.factor = factor;
      }

      double next() {
            return s.next() * factor;
      }
}
```


Wenn ich nun in einem Hauptprogramm die Klasse S benutzen möchte, mache ich folgenden Ausdruck um eine neue Instanz zu erzeugen:

```
S sc = new S(?,2.0);
```

Ich rufe also den Konstruktor auf, soweit so gut, aber was solle ich als ersten Parameter angeben, dort wo das "?" steht?
von dem Interface kann ich keine Instanz erzeugen, da der default eines Interfaces ja public und abstract ist.

Es kann sein, dass es sich hierbei um eine grundsätzliche Frage handelt, trotzdem Bitte ich um Hilfe!

Gruß
      Tetronic

_[Edit by Beni: Codetags]_


----------



## Beni (7. Feb 2007)

z.B. sowas:

```
E base = new G();
S sc = new S( base, 2.0 );
```

Ja, du kannst nicht einfach so ein E aus dem Nichts zaubern, aber du kannst G, F, etc benutzen, denn diese Klassen _sind_ ja E's.


----------



## Tetronic (7. Feb 2007)

ok, danke schonmal. 
Nun habe ich allerdings ein weiteres Problem.

wenn ich in meinem Hauptprogramm anschließend dies machen:

System.out.println(sc.next());

dann erscheint beim kompilieren der fehler: Unknow Symbol. 
verstehe ich keineswegs. 

Gruß
       Tetronic


----------



## Beni (7. Feb 2007)

Crosspost, *geschlossen*

P.S. dann ist deine Variable dort nicht bekannt...


----------

