Hauptmenü

Untermenü

OOP mit JavaScript - Überschreiben - Privates

1. Missverständnisse

... gibt es beim Überschreiben immer wieder. Vor allem, wenn es um private Eigenschaften und Methoden geht. Keine Angst, ist mir auch so gegangen, darum werde ich an dieser Stelle endlich mal das Licht der Erkenntnis über euch zum Leuchten bringen. Auf dass euer Geist erhellt werde.

Der Code


function Kampfpanzer()
{
  var kanone     120;
  this.schiessen = function()
  {
    alert ('Bumm mit ' kanone 'mm-Kanone');
  }
}
function nochnPanzer()
{
  var kanone 155;
}
nochnPanzer.prototype = new Kampfpanzer;

var pz_1 = new nochnPanzer;
pz_1.schiessen();

Erläuterung

Da ich ja schon vorher sagte, dass man sowohl beim Prototyping als auch der Aggregation nur Zugriff auf die öffentlichen Eigenschaften und Methoden des "Mutter"-Konstruktors hat, kann das hier natürlich nicht funktionieren.

2. Aber

... was passiert, wenn man zum Beispiel eine Eigenschaft im "Kind"-Konstruktor als öffentlich festlegt? Funktioniert dann das Überschrieben? Nö! Man fügt in dem Fall einfach eine weitere Eigenschaft hinzu.


function Kampfpanzer()
{
  var kanone     120;
  this.schiessen = function()
  {
    alert ('Bumm mit ' kanone 'mm-Kanone');
    alert ('Bumm mit ' this.kanone 'mm-Kanone');
  }
}
function nochnPanzer()
{
  this.kanone 155;
}
nochnPanzer.prototype = new Kampfpanzer;

var pz_1 = new nochnPanzer;
pz_1.schiessen();

Denn in JavaScript, man glaubt es kaum, ist auch so was möglich, ohne dass sich beide Eigenschaften in die Quere kommen.


function Kampfpanzer()
{
  var kanone     120;
  this.kanone    155;
  this.schiessen = function()
  {
    alert ('Bumm mit ' kanone 'mm-Kanone');
    alert ('Bumm mit ' this.kanone 'mm-Kanone');
  }
}

Mein Tipp

Lasst um Gottes Willen die Finger davon. Da landet ihr ganz schnell in Teufels Küche.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt