2015-03-04 4 views
9

ich habe:Was verbindet 2 Klassen in 1 Klasse, wo eine Klasse eine Unterklasse des anderen genannt wird?

  • eine abstrakte Klasse A
  • eine abstrakte Klasse B, die mit A
  • keine anderen Klassen, die eine Ausnahme von B erstreckt sich
  • andere Klasse (n), die B erstrecken

Um die Anzahl der Klassen zu reduzieren, möchte ich, dass A und B in eine Klasse zusammengeführt werden und dass die anderen Klassen von der neuen zusammengeführten Klasse ausgehen.

Wie lautet der Name dieses Refactorings?

P.S. In meiner Implementierung ist es in Java, kann dieses Refactoring automatisch in IntelliJ durchgeführt werden?

+0

Warum möchten Sie das? Du meinst, dass es niemals eine andere Klasse geben wird, um A zu erweitern, die Dinge anders machen soll als B? Denken Sie zunächst daran, warum Sie zuerst zwei Klassen erstellt haben und dann überlegen Sie, ob dies eine gute Idee ist. – Stultuske

+0

@Stultuske Ja ich verstehe was du meinst. Was ich gerade mache, ist alten Code zu bereinigen, der von veralteten Leuten geschrieben wurde, und jetzt bin ich ziemlich sicher, dass A niemals außer von B erweitert wird. – yuku

+0

Wie lautet der Name dieses Refactorings? Das ist sein Name. – JamesB

Antwort

7

Die Inline-Superklasse von IntelliJ führt das Zusammenführen einer Superklasse mit einer Unterklasse durch.

Inline Superclass

+0

Danke! Ich dachte nicht, dass es "Inline" heißen würde! – yuku

3

Sie werden die Klasse A inlinen, und intellij unterstützt das. Klicken Sie einfach mit der rechten Maustaste auf den Klassennamen und wählen Sie "Refactor" aus dem Pop-up und die Einfügung der Klasse sollte eine Option sein.