‫Willkommen zurück in diesem Video, wir werden abstrakte Klassen behandeln und deshalb werden wir eine Reihe neuer Klassen
‫erstellen. Es ist wichtig, dass Sie das Konzept von Klassen und auch Vererbung und Polymorphie verstehen,
‫denn darauf bauen wir auf .
‫Und womit wir beginnen, ist eine neue Klasse zu erstellen.
‫Also erstellen wir hier eine neue Klasse.
‫Wir gehen zum Projekt in der Klasse und ich werde eine Formklasse erstellen und das wird die Form sein.
‫Die Idee ist nun, dass wir eine Klasse erstellen möchten, von der wir kein Objekt erstellen möchten.
‫Wir wollen also keine Formen instanziieren.
‫Wir möchten Objekte instanziieren, die Arten von Formen sind, aber keine Formen selbst.
‫Eine Form wäre also beispielsweise ein Würfel oder eine Form eine Kugel.
‫Und ich verwende hier 3D-Formen.
‫Rechts.
‫Dreidimensionale Formen.
‫Und nun, wir werden Klassen erstellen, die von der Form erben.
‫Aber wir wollen sicherstellen, dass shape eine tatsächliche abstrakte Klasse ist, was bedeutet,
‫dass wir kein Objekt davon erstellen können, sondern ihre Systeme oder ihre Methoden und ihre Eigenschaften verwenden.
‫Also lasst uns anfangen.
‫Lassen Sie uns diese Form zunächst abstrakt machen.
‫Und dafür können wir das Stichwort abstrakt verwenden.
‫Jetzt ist es also eine abstrakte Klasse.
‫Kommen wir nun zu unserem Programm, diesem Fall, und sehen, dass es sich um eine tatsächliche abstrakte
‫Klasse handelt. Erstellen wir also eine Form Form eins gleich neue Form.
‫Wenn wir dies versuchen, können Sie feststellen, dass keine Instanz einer abstrakten Klassen- oder Schnittstellenform erstellt werden
‫kann.
‫Und da unsere Form eine abstrakte Klasse ist, können wir daraus keine Objekte erstellen.
‫Wir können es also nicht instanziieren.
‫Das ist hier ein wichtiger Aspekt.
‫Gut.
‫Wir brauchen ein richtiges Team.
‫Und ich werde nur diese Eigenschaft namens name erstellen.
‫Die Form braucht also einen Namen und wir haben eine garantierte Mitte, um diese zu erstellen.
‫Ich verwende nur prop und tippe dann doppelt, um eine neue Eigenschaft zu erstellen.
‫OK, das haben wir in den Videos gesehen.
‫Jetzt möchte ich eine Methode haben, und die Methode, die ich verwenden möchte, ist eine virtuelle Methode, virtuelle Leere.
‫Informationen bekommen.
‫Diese virtuelle Tastatur, die Sie hier sehen, wird verwendet, um einen Methodeneigenschaftsindex oder ein Ereignis zu ändern, das in
‫der Basisklasse deklariert ist, und kann in der abgeleiteten Klasse überschrieben werden.
‫Dies ermöglicht es uns, die Methode get infl in einer Fahrklasse zu überschreiben.
‫Gut.
‫Das ist also die Idee hinter dieser virtuellen Tastatur hier.
‫Also fügen wir hier einfach eine Anweisung hinzu, also um die Kontrolle über die richtige Zeile zu bekommen, möchte ich einfach
‫so etwas schreiben wie.
‫Dies ist ein und dann der Name der Form.
‫Okay, das ist ein Name.
‫Und jetzt ist die Idee dahinter, dass ich eine neue Zeile haben möchte und dann die Aussage.
‫Dies ist ein und dann der Name der Form, denn jedes Mal, wenn wir eine Form erstellen, können wir deren Namen
‫festlegen.
‫Wir haben also jetzt eine virtuelle Leere.
‫Jetzt können wir auch eine abstrakte Methode hinzufügen.
‫Lassen Sie uns nun diesen abstrakten Doppelband machen.
‫Was ich also berechnen möchte, ist das Volumen einer Form.
‫Jetzt hier werde ich diese Methode nicht implementieren.
‫Das ist hier ein wichtiger Unterschied.
‫Ich werde es hier nicht umsetzen.
‫Ich sage nur, OK, wann immer eine Klasse von mir erben möchte, muss sie eine Funktionalität
‫für die volume-Methode implementieren.
‫Gut.
‫Nun, wir könnten das natürlich nennen, das Volumen von solchen Sachen berechnen.
‫Aber ich nenne diesen einen Band.
‫Gut.
‫Nachdem wir nun unsere Formklasse vorbereitet haben, können wir sie speichern und eine neue Klasse erstellen.
‫Die nächste Klasse, die ich erstellen werde, ist die Cube-Klasse.
‫Also werde ich einfach einen Würfel erstellen, der eine 3D-Form ist.
‫Jetzt erbt mein Würfel von der Form.
‫Wenn ich dies tue, sehen Sie, dass ich hier eine Fehlermeldung erhalte und sagt, dass Cube keine ererbten abstrakten Zahlen
‫implementiert, sondern dieses Volumen formen.
‫Zeigen Sie also, dass mögliche Korrekturen richtig sind.
‫Abstrakte Klasse implementieren.
‫Wenn ich dies tue, können Sie sehen, dass diese Volume-Methode mit einer override-Anweisung implementiert wird.
‫Es sagt also, dass es alles überschreibt, was in Form und als Form als abstrakte Klasse definiert wurde.
‫Und diese Methode ist abstrakt.
‫Wie Sie sehen, gibt es keine Methode, Kumpel.
‫Es ist wirklich nur die Deklaration der Methode.
‫Jetzt können wir also loslegen und natürlich etwas umsetzen.
‫Sie können sehen, dass wir hier einen Fehler auslösen, keine implementierte Ausnahme.
‫Natürlich wollen wir hier etwas umsetzen.
‫Lassen Sie uns also eine Volumenberechnung in unserer Cube-Klasse implementieren.
‫Um es zu berechnen, brauchen wir nun eine Eigenschaft, die eine Länge sein wird.
‫Also werde ich hier einfach diese neue Eigenschaft namens length erstellen.
‫Und ich werde auch einen Konstruktor hinzufügen.
‫Also öffentlicher Kube.
‫Und immer wenn ich einen Würfel erstellen möchte, muss ich eine Länge übergeben.
‫Das ist es, was ich hier sage.
‫Und wenn ich schon dabei bin, füge ich auch noch einen Namen hinzu.
‫Wie Sie sehen, verwenden wir hier die Vererbung, da der Name in Kuba nicht definiert ist.
‫Es ist in der Form definiert.
‫OK, ich kann hier einfach den Variablennamen festlegen und die Länge auf die Länge setzen, die mir
‫übergeben wurde.
‫Die Eigenschaft length hat also dieselbe Länge wie die Länge, die übergeben wird, wenn wir ein Objekt des Typs
‫erstellen.
‫F Das ist also die Idee hinter dieser Variablen.
‫Und als nächstes können wir diese Volumenmethode implementieren und einfach etwas zurückgeben.
‫Es muss also ein Doppeltes zurückgeben.
‫Rechts.
‫Wir müssen also etwas zurückgeben, das auf double und basiert, um das Volumen eines Würfels zu berechnen, und hiermit verwende
‫ich einen Würfel, der auf allen Seiten die gleiche Länge hat.
‫Also sage ich nur die Länge hoch drei.
‫Also Magpul Länge drei, das heißt, es wird Länge mal Länge mal Länge berechnet.
‫OK.
‫Das ist also unser Volumen und es wird diesen Wert zurückgeben.
‫Jetzt können wir fortfahren und auch diese Methode namens get info implementieren.
‫Was ich also tun werde, ist, es einfach zu kopieren und ich werde jetzt nicht das virtuelle Schlüsselwort verwenden,
‫sondern das Schlüsselwort überschreiben, weil ich überschreiben möchte, um die Info-Methode von meinem Elternteil zu erhalten.
‫Nun, wenn ich das tue, kann ich sie auch anrufen, um Informationen von meiner Basisklasse zu erhalten, was bedeutet, dass in diesem Fall
‫auch Informationen von der Form abrufen aufgerufen wird, die sagt, OK, also wird sie Rufen Sie diese Methode
‫hier auf.
‫Das bedeutet, dass dieser Code ausgeführt wird und dann der Code ausgeführt wird, den wir am Ende hinzufügen.
‫Also füge ich hier einen kleinen Text hinzu und es wird sagen, dass der Würfel eine Länge von hat und dann werde ich die
‫Länge hier übergeben.
‫Also Länge könnte ich hier natürlich auch das Volumen berechnen, aber das überlasse ich dir.
‫Wenn Sie es also tun möchten, fühlen Sie sich frei.
‫Gut.
‫So können wir das.
‫Fahren Sie fort und erstellen Sie eine Klasse, die von einer anderen abstrakten Klasse erbt.
‫Nun, als kleine Herausforderung für dich, und ich werde das Video nur einmal pausieren, solltest du mit
‫einer Herausforderung beginnen.
‫Die Idee ist also, jetzt eine andere Form zu erstellen, die in unserer Klasse von Form erbt und die Form
‫eine Kugel sein sollte, jetzt die gleiche Art von Funktionalität implementieren, die Sie hier für Sphere
‫sehen können.
‫Gut.
‫Viel Glück.
‫Poste ein Video und versuche das zu tun.
‫Gut.
‫Also ich hoffe du hast es versucht.
‫Ich werde hier eine neue Klasse erstellen und diese Klassensphäre so nennen.
‫Jawohl.
‫Und diese Klasse sollte von der Form erben.
‫Und natürlich muss ich meine abstrakte Klasse implementieren, was bedeutet, dass ich diese Volumenmethode
‫jetzt hier implementieren muss, ich kann natürlich wieder berechnen, wo eine Eigenschaft hat.
‫Aber eine nützliche Eigenschaft wäre diesmal nicht die Länge, sondern eigentlich der Radius, denn wir berechnen
‫das Volumen in einer Kugel anders als in einem Würfel.
‫Und wir haben es nicht in Form gemacht, weil eine Form allein kein Volumen haben kann.
‫Rechts.
‫Wenn es nicht als Krieg definiert ist, können wir sein Volumen nicht berechnen, sagen wir, weil wir nicht wissen, welche
‫Form es hat.
‫Rechts.
‫Deshalb brauchen wir die Klauseln, die von der Form erben und die Funktionalität implementieren.
‫Jetzt kann ich also weitermachen und einen Konstruktor, eine öffentliche Sphäre und einen doppelten Radius erstellen.
‫Wir brauchen also einen Radius und können dann den Namen der Kugel festlegen, der Kugel
‫sein sollte, und wir sollten einen Radius-Eigenschaftswert haben.
‫Also weisen wir den Radius, der uns übergeben wird, als Eigenschaft radius einen Wert zu.
‫Gut.
‫Nun, da wir das haben, können wir das Volumen berechnen.
‫Anstatt hier eine Ausnahme auszulösen, möchte ich nun das Volumen meiner Kugel berechnen.
‫Und dazu benötige ich PI und folgende Berechnung.
‫Rechnen Sie also den Powell-Radius hoch drei und all das multipliziert mit drei geteilt durch oder mit vier geteilt
‫durch drei.
‫Gut.
‫So berechnen wir das Volumen und können jetzt fortfahren und auch die Infl-Methode implementieren.
‫Also werde ich es einfach in vier aus meinem Würfel kopieren und faul sein.
‫Kopieren Sie also diesen Teil hier und implementieren Sie dasselbe.
‫Also haben wir das Schlüsselwort wieder überschrieben.
‫Es ist genau der gleiche Name wie in der Formklasse.
‫Und wir verwenden hier Baskette-Info, um die Methode aufzurufen, die hier drin war.
‫Was auch immer der Methodenrumpf war.
‫Und dann werden wir, anstatt die Länge zu übergeben oder etwas über die Länge zu sagen, etwas
‫über den Radius und den Würfel sagen.
‫In diesem Fall hat die Kugel einen Radius von Radius.
‫Gut.
‫Nun, da wir all das haben, können wir jetzt fortfahren und Objekte all dieser
‫verschiedenen Klassen erstellen.
‫Also werde ich hier nicht hallo Welt sagen.
‫Stattdessen werde ich eine Reihe von Formen erstellen.
‫Also werde ich sagen, OK, bitte gib mir eine Reihe von Formen und es wird eine neue Kugel mit einem Radius von vier und
‫ein neuer Würfel mit einem Radius von drei sein.
‫Und in diesem Fall ist es tatsächlich die Länge von drei, weil Cube keinen Radius hat, sondern eine
‫Länge.
‫Und dann möchte ich für jede der bisherigen Formen etwas ausführen, Form in Form.
‫Ich will.
‫Gehen Sie alle und diesen Fall durch, nur die beiden.
‫Aber was ich haben möchte, sind geformte Informationen.
‫Also Info holen sollte aufgerufen werden.
‫Und ich möchte so etwas schreiben.
‫Und in diesem Fall Null.
‫Will der Name sein und dann möchte ich das Volumen anzeigen, also möchte ich den Namen haben ein Volumen von.
‫Und dann möchte ich natürlich das Volumen dieses Stücks wissen, das wir uns ansehen, also
‫gestalte diesen Namen und gestalte dieses Volumen.
‫OK, hier ist es also wichtig, dass wir die Volume-Methode aufrufen, oder?
‫Es ist nicht nur ein.
‫Property, also haben wir die Kontrolle, Red Line hat in diesem Fall ein Volumen von Name hat ein Volumen von Volumen, also
‫berechnet es nur das Volumen.
‫Okay, jetzt testen wir das einfach mal.
‫Mal sehen, was hier los ist.
‫Was wir geschaffen haben und was wir sind, haben wir hier eine leere, leere Zeile.
‫Dann heißt es, dass dies eine Kugel ist.
‫Die Kugel hat einen Radius von vier.
‫Die Kugel hat ein Volumen von zweihundertachtundsechzig Komma null acht.
‫Und das ist dann ein Würfel.
‫Diese Kupers, eine Länge von drei bis Cube hat ein Volumen von siebenundzwanzig.
‫Gut.
‫Sie können also sehen, dass dies ein sehr einfacher Code ist, den wir hier geschrieben haben, aber er erklärt oder zeigt bereits die
‫meisten Funktionen, die wir über abstrakte Klassen wissen müssen.
‫Das Coole daran ist, dass wir auch einige weitere Keywords verwenden können, die wir noch nicht verwendet haben.
‫Und da dieses Video lang genug wird, würde ich sagen, dass wir das im nächsten Video tun.
‫Wir sehen uns also dort.