2016-04-08 7 views
1

nach WordWeb Dictionary "Extend" bedeutet "Erhöhung der Umfang, Bereich oder Fläche". Wenn wir also dieses Ding im Hinterkopf behalten und Vererbung machen, dann erhöht die abgeleitete Klasse in diesem Fall einfach die Attribute und Funktionen der Basisklasse. Aber während der Vererbung ändern wir dieses Konzept. Zum Beispiel können in der Basisklasse alle internen Funktionen auf ihre privaten Mitglieder zugreifen, aber in der abgeleiteten Klasse wird dieses Verhalten geändert, und keine abgeleiteten Klassenfunktionen können auf die privaten Datenmitglieder der Eltern zugreifen. Bitte erklären Sie, wie und wann wir "Vererbung" als "Verlängern" der Basisklasse aufrufen.Ist es angemessen, die Vererbung als EXTEND einer Klasse

Vielen Dank im Voraus.

+1

beziehen sich nicht vollständig, aber in einer Art und Weise ist es: https://en.wikipedia.org/wiki/Liskov_substitution_principle – zegkljan

+0

Vielen Dank für Link. Ich denke, Sie haben meinen Standpunkt irgendwie verstanden, aber ich kann es nicht eindeutig sagen. Anstatt nicht nur die Basisklasse zu verlängern, müssen wir nicht explizit alle Vererbung als "Partial Extend" angeben, weil es einfach nicht korrekt ist, "Extend" zu sagen? – dplank

+1

Ich denke, Sie halten sich an die Worte zu fest. "Erweitern" ist nur ein (Schlüssel-) Wort, das eine Klasse von einer anderen erbt. Ich denke "extend" wird verwendet, weil das normalerweise der Fall ist - wir haben eine Klasse und wir wollen eine andere Klasse schaffen, die mehr kann. Auch Ihr "Konzeptwechsel" ist fraglich. Ja, innerhalb der Unterklasse haben Sie ein etwas anderes Konzept, aber außerhalb der (Unter) Klasse, wenn die Unterklasse dem Substitutionsprinzip entspricht, bleibt das Konzept gleich. – zegkljan

Antwort

0

Alles, was privat ist, gehört der Klasse, also kann es nicht vererbt werden. Durch die Vererbung erhalten Sie Zugriff auf alles, was öffentlich ist oder von anderen Zugriffsmodifizierern zugänglich ist. In einfachen Worten bedeutet dies, dass die geerbte Klasse teilt, was geteilt werden kann (private ist privat, wie das Wort sagt) mit anderen Klassen oder Klassen, die es erben. Ich empfehle Ihnen, mehr darüber zu lesen, da dies eines der grundlegenden Konzepte in Java oder anderen objektorientierten Sprachen ist (in der Tat ist dies nicht mit der Sprache verbunden, sondern mit der objektorientierten Programmierung).

+0

Danke, aber meine Frage bezieht sich nicht auf das Konzept der Vererbung, aber die Frage bezieht sich auf "Vererbung" mit der Bedeutung des Wortes "erweitert". Weil wir mit Vererbung nicht nur unsere Basisklasse erweitern, sondern auch interne Verhaltensweisen ändern. – dplank

1

In Code können Sie auf Methoden und Eigenschaften der Basisklasse zugreifen.

Wenn ich bekam

public class A 
{ 
public void MakeSauce() {} 
} 

Dann

public class B : A 
{ 
public B() 
{ 
MakeSauce(); 
} 
} 

ist ein gültiger Konstruktor, wo es die Methode aufrufen es von A. geerbt jedoch als vererbten Klasse Sie sind in der Lage, auch Ihre geben eigene '' Twist '' zu MakeSauce.

I.e.

public class A 
{ 
public virtual void MakeSauce() { Console.WriteLine("I made sauce!"} 
} 

dann

class B : A 
{ 
    public B() 
    { 
     MakeSauce(); // call A's implementation 
    } 

    public override void MakeSauce() // override A implementation 
    { 
     Console.WriteLine("I made 2 gallons of sauce."); 
    } 
}