Die Schnittstelle kann eine Methode nicht überschreiben und die Standardimplementierung [Duplikat] bereitstellen.

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Die Schnittstelle kann eine Methode nicht überschreiben und die Standardimplementierung [Duplikat] bereitstellen.

by Anonymous » 05 Mar 2025, 13:54

Stellen Sie sich zwei Klassen vor, Katze und Hund, die genau das gleiche toString () Implementierung:
teilen

Code: Select all

interface Animal {
String getName();
}

class Cat implements Animal {
private final String name;

public Cat(String name) {
this.name = name;
}

@Override
public String getName() {
return name;
}

@Override
public String toString() {
return "I'm a " + this.getClass().getSimpleName() + " named " + this.getName() + ".";
}
}

class Dog implements Animal {
private final String name;

public Dog(String name) {
this.name = name;
}

@Override
public String getName() {
return name;
}

@Override
public String toString() {
return "I'm a " + this.getClass().getSimpleName() + " named " + this.getName() + ".";
}
}
Es wäre schön, wenn die gemeinsame Methode toString () an die Schnittstelle gezogen werden könnte:

Code: Select all

interface Animal {
String getName();
// Following code is unfortunately invalid
@Override
default String toString() {
return "I'm a " + this.getClass().getSimpleName() + " named " + this.getName() + ".";
}
}
< /code>
Aber leider erlaubt die Sprache nicht, dass Schnittstellen eine Standardimplementierung einer überschriebenen Methode haben. Ich kann eine abstrakte AbstractAnimal 
eine abstrakte Klasse erstellen und sie stattdessen einsetzen, aber sobald meine Katze und Hunde AbstractAnimal erweitern, können sie keine andere Klasse erweitern, was eine unerwünschte Einschränkung darstellt. Abstractanimal hat keinen Zustand, warum kann es also keine Schnittstelle sein? Kann ich andere Möglichkeiten vermeiden, den ToString Code in CAT und Hunde ?

Top