# 2 Interfaces mit Methoden selber Signatur implementieren



## neXyon (2. Jul 2005)

Hi,

wie kann man eine Klasse 2 interfaces mit Methoden mit einer gleichen Signatur implementieren lassen?

Das es so nicht funktioniert ist klar:


```
interface A
{
  public int get(double e);
}

interface B
{
  public double get(double e);
}

public class ABC
implements A, B
{
  private int a;
  private double b;

  public ABC()
  {
    a = 5;
    b = 4;
  }

  public double get(double e)
  {
    return b*e;
  }

  public int get(double e)
  {
    return a*((int)Math.round(e));
  }
}
```

So wie in C# geht es auch nicht:


```
interface A
{
  public int get(double e);
}

interface B
{
  public double get(double e);
}

public class ABC
implements A, B
{
  private int a;
  private double b;

  public ABC()
  {
    a = 5;
    b = 4;
  }

  public double B.get(double e)
  {
    return b*e;
  }

  public int A.get(double e)
  {
    return a*((int)Math.round(e));
  }
}
```

Als ich gesucht hab, hab ich keine Lösung gefunden. Ich such schon seit 2 Stunden und schlafe gleich ein vor langeweile :-(

Vielen Danke für die Hilfe schon im vorraus, bin mal gespannt wie das geht, falls überhaupt.

Mfg


----------



## Campino (2. Jul 2005)

soweit ich weiß geht das nur, wenn beide get()-methoden die selbe Funktion haben sollen, dann definiert man sie nur einmal und sie wird von beiden Interfaces genutzt, wenn man dass nicht will, muss man sie in den Interfaces unterschiedlich benennen.


----------



## eclipse (2. Jul 2005)

Welche Semantik haben die Schnittstellen / Methoden?

Deklariere die Klassen / Schnittstelle / Methoden mit konkreten Namen.

Was du machst ist schlechtes Design


----------



## messi (2. Jul 2005)

Wie du dir schon selbst beantwortet hast, habe die Methoden die gleiche Signatur. Wenn in C# auch der Rückgabetyp zur Signatur gehört, mag das (auf den ersten Blick vielleicht) nett sein. In Java mußt du aber explizit getA() bzw getB() schreiben.


----------



## Guest (3. Jul 2005)

Ja, offensichtlich geht es nicht. Danke.
Es geht hier nicht um einen schlechten Programmierstil oder so, sondern rein ums theoretische.
Was wenn 2 vordefinierte Bibliotheken, die man nicht ändern kann eben sowas implementieren? Mein Beispielcode war ja absichtlich so kurz.

Mfg


----------



## Bleiglanz (3. Jul 2005)

Anonymous hat gesagt.:
			
		

> Was wenn 2 vordefinierte Bibliotheken, die man nicht ändern kann eben sowas implementieren?


sowas geht dann eben nicht? und selbst wenns ginge, wärs doch exttrem schlechter stil...

dann würde man eben in ABC 

```
public A asA() { return new A(){ // anonyme innere klasse die get implementiert };}
public B asB() {genauso
```
machen, damit ein ABC mal als A und mal als B auftreten kann


----------

