vererbung vs benutzung

  • Themenstarter Themenstarter gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

gast

Gast
Vererbung:
Code:
class Y extends x{...}

Benutzung:

class Y{
  X d;
  ...
}

Ich hab dazu mal ein paar Fragen, leider gibts im Internet dazu kaum Informationen über die pro und kontras.

Fragen:
- bei welchem Ist die Kompilierzeit geringer?
- bei welchem ist der Objektcode kürzer?

[/code]
 
Hi,
es ist eigentlich wenig verwunderlich, dass du kaum Informationen zu den Fragen findest! Ich hoffe dass es auch hier so bleiben wird, aber die Fragen sollten sich gar nicht stellen!
Egal wie die Antwort aussieht, es würde nichts daran ändern, dass das komplett verschiedene Dinge sind. Man sollte nicht anhand dieser Fragen zwischen Benutzung und Vererbung abwägen, was man verwendet.
Wann was in Frage kommt, dazu solltest du jede Menge finden!

Gruß Der Anmeldeboykottierer
 
Darum geht es nicht. Es geht allein um die Fragen.
Es hängt nicht von den Antworten ab was ich benutze.
 
habs nicht getestet, aber ich schätz dass die compilerzeit sich nur absolut minimal ändert..

Vererbung = "Ist-Beziehung"

Code:
class KFZ{
}

class Auto extends KFZ{

}
 
Die Frage welcher der beiden Varianten besser ist, stelle ich mir öfters, wenn ich ein kleines Programm mit grafischer Oberfläche schreiben will:

1. JFrame als Variable
Code:
import javax.swing.JFrame;

public class Fenster {

  private JFrame fenster;
  
  public Fenster() {
    fenster = new JFrame("Test");
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fenster.setBounds(100, 100, 100, 100);
    fenster.setVisible(true);
    // weitere Anweisungen
  }

  public static void main(String[] args) {
    new Fenster();
  }
}

2. extends JFrame
Code:
import javax.swing.JFrame;

public class Fenster extends JFrame {
  
  public Fenster() {
    super("Test");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 100, 100);
    setVisible(true);
    // weitere Anweisungen
  }

  public static void main(String[] args) {
    new Fenster();
  }
}

Hierbei macht es vermutlich keinen großen Unterschied. Die zweite Variante ist natürlich kürzer, stellt aber auch alle öffentlichen Methoden von JFrame zur Verfügung.

Letztendlich muss man wahrscheinlich im konkreten Fall entscheiden. Ich würde vermuten, dass durch die Vererbung nur ein Objekt im Speicher liegt und im anderen Fall zwei.
 
KSG9|sebastian hat gesagt.:
Vererbung = "Ist-Beziehung"

Das lernt man so, ist aber ungenau (bzw. falsch). Eine Generalisierung ist eine 'Ist-Beziehung'. Vererbung ist ein Mechanismus, um inkrementell mehrere Beschreibungen zu kombinieren.

Siehe "The UML Reference Manual" (Seite 287 bei mir).

Üblicherweise verwenden die Programmierer die Begriffe synonym (wie auch "Funktion" und "Methode"), aber obwohl beide miteinander verwandt sind, sind sie nicht synonym.
 
Kola hat gesagt.:
KSG9|sebastian hat gesagt.:
Vererbung = "Ist-Beziehung"

Das lernt man so, ist aber ungenau (bzw. falsch). Eine Generalisierung ist eine 'Ist-Beziehung'. Vererbung ist ein Mechanismus, um inkrementell mehrere Beschreibungen zu kombinieren.

Siehe "The UML Reference Manual" (Seite 287 bei mir).

Üblicherweise verwenden die Programmierer die Begriffe synonym (wie auch "Funktion" und "Methode"), aber obwohl beide miteinander verwandt sind, sind sie nicht synonym.

Vererbung ist genauso eine "Ist-Beziehung" wie die Generalisierung, nur das Generalisierung sich halt auf ein abstraktes (UML-) Modell bezieht und Vererbung die Umsetzung dieses Mechanismus in einer Programmiersprache darstellt. Insofern kann man die Begriffe doch sehr wohl im gleichen Zusammenhang verwenden. Oder wo sind Deiner Meinung nach die signifikanten Unterschiede?

Also einzig der Kontext, in welchen die Begriffe verwendet werden, unterscheiden die beiden. Übrigens ähnlich wie bei Funktion und Methode. Wobei da natürlich wirkliche Unterschiede bestehen, weil die Begriffe aus unterschiedlichen Paradigmen kommen.
 
OK, dann nochmal etwas formaler:
Generalisierung ist eine taxonomische Beziehung
Vererbung ist ein Mechanismus

Vererbung ist keine Beziehung zu einer Klasse, da die vererbten Merkmale ja erst inkrementell zusammengesucht werden. Also ist das Resultat einer Vererbung so eine Art Beziehung zu allen Klassen, die in der Hierarchie darüber liegen.

Der Unterschied ist klein, trotzdem sind es unterschiedliche Konzepte.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben