peter: Frage Interfaces

Beitrag lesen

Hi ich habe eine Frage zu Interfaces und deren Verwendung im Code.
Wenn ich ein Interface habe:

  
public interface A {  
   public void do();  
}  

und eine Klasse welche das Implementiert

  
public void B implements A {  
   public void do() {  
      // implementierung von do  
   }  
   public void print(String s) {  
      System.out.println(s);  
   }  
}  

Wie arbeite ich jetzt damit?
A obj = new B();
oder
B obj = new B();

Ich weiß zwar im 1. Fall dass ich mitm Interface arbeiten kann und ich auf jeden fall die Methode do verwenden kann, aber ich könnte ja außer einem Cast auf B nicht auf print zugreifen. Das gleiche Problem hätte ich auch wenn meine Klasse B von einer abstrakten Klasse methoden erben würde. Das heißt ich müsste ja eigentlich immer mit der Implementierung arbeiten.

Das würde aber heißen dass ich im Code selbst immer die Implementierung verwende, und bei Funktionsaufrufen zwischen Klassen zb mit dem Interface arbeite.

Also Klasse B kommunziert mit einer anderen Klasse C und C benötigt aber nur die do funktion, egal welches Objekt reinkommt, dann würde ich zb das Objekt übergeben können oder?

bin mir nicht sicher ob ich das korrekt verstanden habe.

danke