Ich denke, wir können immer Klasse mit mehreren Schnittstellen zB ersetzen:Stimmt es, dass wir alle Klassen ersetzen können, die mehrere Schnittstellen implementieren?
public class C implements A,B{
}
in einer anderen Version, die jede Klasse höchstens eine Schnittstelle enthält, ist es wahr (ich will nur fragen: „Wenn wir können ...“ nicht "Wenn wir ..." hier sollten)?
C betrachten, die Methoden a() von einem überschreibt, und b() B:
public class C implements A,B{
@override
public void a(){
}
@override
public void b(){
}
}
wird volating einzige Verantwortung Prinzip, weil entweder ändern, um ein() oder b() erfordert C Änderung, sondern wir kann A und B mit einer unabhängigen Klasse umhüllen:
public class ConcreteA implements A{
@override
public void a(){
}
}
public class ConcreteB implement B{
@override
public void b(){
}
}
public class C{
ConcreteA a;
ConcreteB b;
}
ist es wahr?
Und auch Ihre Klasse eine einzige Verantwortung hat, die 2-Schnittstelle erfordert, ist es immer noch möglich, es neu zu schreiben, in jeder Klasse nur eine Schnittstelle zu werden, zum Beispiel der Originalversion:
public class C implements A,B{
@Override
public void a(){
}
@Override
public void b(){
a();
}
}
wir in diesem Fall kann es umschreiben als:
public class ConcreteA implements A{
@Override
public void a(){
}
}
public class C implements B{
ConcreteA a;
@Override
public void b(){
a.a();
}
}
so ist meine Frage, es ist wahr, dass wir alle unsere Klassen ersetzen können, die mehr als zwei Schnittstellen in die Version enthalten, die nur höchstens eine Schnittstelle enthält?
Wenn nicht, in welchen Situationen muss ich mehr als eine Schnittstelle implementieren, um die Aufgabe zu beenden?
Nein, das stimmt nicht. Was ist, wenn eine der Schnittstellen 'Serializable' ist? –
Übrigens meinen Sie anhand Ihrer Beispiele "mindestens 2" ('> = 2'), nicht" mehr als 2 "('> 2'). –
Meinst du: öffentliche Klasse C erweitert ConcreteA implementiert B oder wenn B definiert ist, implementiert es auch A in der Definition? damit beide Methoden a() und b() auf Instanzen der C-Klasse zugänglich sind? –