Frage: Was ist das Prinzip des Funktionsumschreibens? Antwort: Durch das Überschreiben von Funktionen können Unterklassen das Verhalten der übergeordneten Klasse steuern, indem sie von der übergeordneten Klasse geerbte Methoden neu definieren, indem sie eine Methode mit demselben Namen deklarieren und das Schlüsselwort override verwenden. Schritte: Deklarieren Sie die virtuelle Methode im Konstruktor der Unterklasse und markieren Sie sie mit dem Schlüsselwort virtual. Geben Sie den Rückgabewerttyp, den Namen und die Parameterliste der Methode an, die mit der Methode der übergeordneten Klasse identisch sind. Verwenden Sie das Schlüsselwort override, um die Methode explizit als Override zu deklarieren.
Enthüllung des Prinzips des Funktionsüberschreibens: Wie Unterklassen das Verhalten von übergeordneten Klassen steuern
Überschreiben ist ein entscheidendes Konzept in der objektorientierten Programmierung, das es Unterklassen ermöglicht, von übergeordneten Klassen geerbte Methoden neu zu definieren. Durch Überschreiben kann eine Unterklasse das Verhalten ihrer übergeordneten Klasse anpassen und gleichzeitig die Kompatibilität mit dem Basisklassencode wahren.
Überschreiben verstehen
Überschreiben wird im Konstruktor der Unterklasse im folgenden Format deklariert:
virtual <return type> <function name>(<parameter list>) override;
virtual
Das Schlüsselwort gibt an, dass die Methode von der Unterklasse überschrieben werden kann. virtual
关键字表示该方法可以被子类重写。<return type>
指定方法的返回值类型。<function name>
是被重写的方法名称。<parameter list>
是方法的参数列表。override
关键字明确声明该方法是对父类方法的重写。实战案例
为了说明函数重写,我们创建一个带有 draw()
方法的 Shape
基类和一个名为 Circle
的子类:
class Shape { public: virtual void draw() { cout << "Drawing Shape" << endl; } }; class Circle : public Shape { public: void draw() override { cout << "Drawing Circle" << endl; } };
Shape
类的 draw()
方法被声明为 virtual
,这意味着它可以被 Circle
类重写。在 Circle
类中,draw()
方法被重新定义,打印出 "Drawing Circle"。
重写工作原理
当子类对象调用 draw()
方法时,编译器会动态选择与该对象关联的适当实现。如果对象是一个 Circle
实例,则会调用重写后的 Circle::draw()
方法。否则,它将调用基类的 Shape::draw()
方法。
优点
函数重写提供了以下优点:
注意事项
重写时应遵循以下注意事项:
override
<return type>
Gibt den Rückgabewerttyp der Methode an. <funktionsname></funktionsname>
ist der Name der überschriebenen Methode. 🎜🎜<parameter list>
ist die Parameterliste der Methode. Das Schlüsselwort 🎜🎜override
deklariert explizit, dass die Methode eine Überschreibung der übergeordneten Klassenmethode ist. 🎜🎜🎜🎜Praktischer Fall🎜🎜🎜Um das Umschreiben von Funktionen zu veranschaulichen, erstellen wir eine Shape
-Basisklasse mit einer draw()
-Methode und einer Klasse namens Circle Subclasses of
: 🎜rrreee🎜 Die Methode draw()
der Klasse Shape
ist als virtuell
deklariert, was bedeutet, dass sie Circle
-Klassenüberschreibung. In der Klasse Circle
wird die Methode draw()
neu definiert, um „Drawing Circle“ zu drucken. 🎜🎜🎜So funktioniert das Überschreiben🎜🎜🎜Wenn ein Unterklassenobjekt die Methode draw()
aufruft, wählt der Compiler dynamisch die entsprechende Implementierung aus, die dem Objekt zugeordnet ist. Wenn das Objekt eine Circle
-Instanz ist, wird die überschriebene Circle::draw()
-Methode aufgerufen. Andernfalls wird die Methode Shape::draw()
der Basisklasse aufgerufen. 🎜🎜🎜 Vorteile 🎜🎜🎜 Das Überschreiben von Funktionen bietet die folgenden Vorteile: 🎜🎜🎜 Ermöglicht Unterklassen, das Verhalten ihrer übergeordneten Klasse nach Bedarf anzupassen. 🎜🎜Behalten Sie die Skalierbarkeit und Wiederverwendbarkeit des Codes bei. 🎜🎜Erleichtert Code-Refactoring ohne Änderung der Basisklassen. 🎜🎜🎜🎜Hinweise🎜🎜🎜Beim Überschreiben sollten folgende Überlegungen beachtet werden: 🎜🎜🎜Die Methodensignatur (Rückgabetyp und Parameterliste) muss mit der Methode der übergeordneten Klasse identisch sein. 🎜🎜Eine überschriebene Methode kann keine restriktivere Zugriffsebene haben als die Methode ihrer übergeordneten Klasse. 🎜🎜Überschriebene Methoden verwenden normalerweise das Schlüsselwort override
, um eine Überprüfung zur Kompilierungszeit bereitzustellen und versehentliche Überschreibungen zu verhindern. 🎜🎜Das obige ist der detaillierte Inhalt vonEnthüllung des Prinzips des Funktionsumschreibens: Wie Unterklassen das Verhalten von übergeordneten Klassen steuern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!