Interface in Methode übergeben?

downset04

Erfahrenes Mitglied
Hallo

Hab letztes bei einer Methode gesehen dass man auch Interfaces übergeben kann, bislang war mir nur bekannt dass Klassend die Interfaces implementieren können.

Aber was kann man zb mit
Code:
public methode(Ifoo){}
machen wenn Ifoo ein Interface ist? ist das wie eine Klasse? und kann das wie eine Variable behandelt werden? bei der einen Klasse war das interface als Variable deklariert?

thx
 
also ich glaub du könntest ein Objekt vom Typ des Interfaces übergeben.. aber doch nicht das Interface selbst...

public metohode(IFoo myObject){}

müsste gehen.. da kannste dann halt alles übergeben was "IFoo" implementiert.. Hi, Polymorphie! ;)
 
also die klasse schaut so aus was kann man mit der machen?

Code:
public class foo {

  private Interfacefoo desc;
  private String re;  
  private String pu;

  public AuthTokenRequest( final Interfacefoo des,
                           final String req,
                           final String pur ) {
    this.desc = des;
    this.re = req;
    this.pu = pur;
  }
 
Interfaces sind Schnittstellen die vorgeben was für Methoden von Klassen implementiert werden müßen.

Ein Beispiel:
Java:
package de.tutorials;

public class InterfaceDemo {

	public interface Driveable {

		public String getName();

		public int getNumberOfWheels();

	}

	public static class Car implements Driveable {

		@Override
		public String getName() {
			return "Car";
		}

		@Override
		public int getNumberOfWheels() {
			return 4;
		}

	}

	public static class Bicycle implements Driveable {

		@Override
		public String getName() {
			return "Bicycle";
		}

		@Override
		public int getNumberOfWheels() {
			return 2;
		}

	}

	public static void driveFromAToB(Driveable with, String whom, String from,
			String to) {
		System.out.println(whom + " drives by " + with.getName() + " from "
				+ from + " to " + to + ".");
	}

	public static void main(String[] args) {
		driveFromAToB(new Car(), "Me", "here", "there");
		driveFromAToB(new Bicycle(), "You", "there", "here");
	}

}

Car und Bicycle implementieren beide die Schnittstelle Driveable und damit die Methoden getName und getNumberOfWheels. Diese Methoden können damit über die Schnittstelle angesprochen werden. Dies passiert in der Methode driveFromAToB die ein konkretes Objekt with übergeben bekommt dessen Klasse Driveable implementiert.
 
Code:
Driveable b = new Car();
        if(b instanceof Car){
            System.out.print("It's a car");
        }

sowas t auch für was braucht man das ?
 
halt da hinein
Code:
   public static void main(String[] args) {
Driveable b = new Car();
     if(b instanceof Car){
         System.out.print("It's a car");
     }
        driveFromAToB(new Car(), "Me", "here", "there");
        driveFromAToB(new Bicycle(), "You", "there", "here");
    }
 
Öhm b ist eine Variable vom Typ Driveable und erlaubt damit den Aufruf aller Methoden die dort definiert sind.

Ob Driveable nun eine Klasse oder ein Interface ist ist egal sobald du einmal ein Objekt davon hast. Interfaces lassen sich nur nicht instanziieren, das geht nur mit Klassen.

instanceof sollte man übrigens nur sehr sparsam einsetzen und ist bei ordentlichem Design nicht von Nöten.
 
Zurück