Ich bin gerade dabei, "Die C++ Programmiersprache 4. Ausgabe" zu lesen, und ich bin an den Punkt gelangt, an dem Bjarne versucht, konkrete Klassen zu erklären. Seine Erklärung verwirrt mich, und ich kann online keine Erklärung finden, die mich befriedigt. Ich verstehe, dass abstrakte Klassen Klassen sind, die mindestens eine virtuelle Funktion haben und dass konkrete Klassen das Gegenteil sind, aber ich kann mich nicht um konkrete Klassen kümmern. Das Buch "Programming Principles and Practice Using C++" besagt, dass eine konkrete Klasse im Wesentlichen eine abgeleitete Klasse und eine abstrakte Klasse eine Basisklasse ist. Ist das die richtige Interpretation? Ich habe den ganzen Tag versucht, dieses Konzept herauszufinden. Auch "eine Klasse, die zum Erstellen von Objekten verwendet werden kann, ist eine konkrete Klasse". Bedeutet das, dass eine Klasse konkret ist, wenn ich etwas wie "myclass classobject1;" machen kann und ich keine Objekte mit abstrakten Klassen erstellen kann?Was ist eine konkrete Klasse in C++?
Antwort
Im Wesentlichen ist eine konkrete Klasse eine Klasse, die eine Schnittstelle implementiert. Eine Schnittstelle, z. B. eine abstrakte Klasse, definiert, wie Sie mit einer Instanz interagieren können, die diese Schnittstelle implementiert. Sie interagieren mit einer Instanz über Memberfunktionen. Daher deklariert eine Schnittstelle normalerweise virtuelle Memberfunktionen, die von einer implementierenden Klasse (konkrete Klasse) überschrieben (implementiert) werden sollen. Wenn ich eine abstrakte Klasse Animal
habe, könnte es eine virtuelle Elementfunktion namens speak
haben. Alle Tiere erzeugen unterschiedliche Geräusche, so dass die Schnittstelle Animal
nicht weiß, wie diese Funktion definiert wird. Es ist Aufgabe der konkreten Klassen wie Dog
oder Tiger
, zu definieren, was tatsächlich passiert, wenn die Funktion speak
aufgerufen wird.
Also im Grunde wäre die abstrakte Klasse die Basisklasse, die die virtuellen Funktionen hat, und die abgeleitete Klasse, die tatsächlich die Funktionen der virtuellen Funktionen gibt, ist die konkrete Klasse? –
Während ich dieses Szenario als Beispiel verwendet habe, muss eine konkrete Klasse nicht unbedingt von einer abstrakten Klasse abgeleitet werden. Es ist einfach eine Klasse, die das Verhalten ihrer Mitgliedsfunktionen (Schnittstelle) vollständig definiert. –
- 1. , was die konkrete Klasse in Java ist
- 2. Was ist eine konkrete Implementierung?
- 3. Ist keine konkrete Klasse AndroidManifest
- 4. Moq eine konkrete Klasse Methodenaufruf
- 5. Objective-C: Was ist eine faule Klasse?
- 6. Was ist die SelectList-Klasse in C#?
- 7. Was ist Proxy-Klasse in C++
- 8. Was ist @namespace-Feld in C# -Klasse?
- 9. Was ist der Zweck von typedefing eine Klasse in C++?
- 10. kann nicht konkrete Klasse in Julia instanziiert
- 11. Können wir eine konkrete Klasse in Java implementieren?
- 12. Dependency Injection, wenn die konkrete Klasse getauscht werden muss C#
- 13. Was ist eine "statische Methode" in C#?
- 14. Was ist eine zustandslose Klasse (in asp.net)?
- 15. Was ist eine Typdefinition in einer Klasse?
- 16. Was ist eine zustandsabhängige Klasse in Java?
- 17. Wie bekomme ich eine konkrete Klasse aus der JSON-Antwort?
- 18. C# Interface Funktionsdefinition konkrete Implementierung
- 19. Java verschachtelte Map-Deklaration - was ist inner Map konkrete Art
- 20. Abstrakte und konkrete Methode mit derselben Signatur in generischer Klasse
- 21. C++ - Funktion akzeptiert keine konkrete Implementierung
- 22. Testen der abstrakten Klasse Konkrete Methoden
- 23. Was bedeutet "Klasse:" in C++?
- 24. Was ist eine Wertklasse und was ist eine Referenzklasse in C#?
- 25. PHP - erben eine abstrakte Klasse und eine konkrete Klasse mit Überschreibung Methode
- 26. Was ist :: Klasse in PHP?
- 27. Was ist eine Nachricht in objective-c?
- 28. Was ist eine Bitmap in C?
- 29. Was ist eine Null-Anweisung in C?
- 30. Was ist eine Skalarvariable in C?
Diese (https://stackoverflow.com/questions/2149207/what-ist-die-difference-between-a-concrete-class-and-an-abstract-class) Hilfe? – user4581301
@Ramon Ich habe diese Frage auch schon gesehen. Nach dem erneuten Lesen erhält ich aus der Antwort, dass eine konkrete Klasse eine Klasse ist, die von einer abstrakten Klasse geerbt hat und ihre virtuellen Funktionen nutzt. Ist das richtig? –
Eine konkrete Klasse ist eine Klasse, die nicht abstrakt ist. Es kann instanziiert werden. –