Video: [C++ von { bis }] 14 - Abstrakte Klassen 2025
Som intellektuelt tilfredsstillende som factoring er i C ++, introducerer det et eget problem. I et eksempel om bankkontoklasser, specifikt den almindelige basisklasse Konto. Tænk et øjeblik om, hvordan du kan gå om at definere de forskellige medlemsfunktioner, der er defineret i Konto.
De fleste Konto medlemsfunktioner er ikke noget problem, fordi begge kontotyper implementerer dem på samme måde. Implementering af disse fælles funktioner med Konto :: tilbagetrækning () er imidlertid anderledes.
Reglerne for tilbagekaldelse fra en opsparingskonto er forskellige fra dem, der skal tages ud af en kontokonto. Du skal implementere Savings:: withdrawal () forskelligt, end du gør Checking:: withdrawal () . Men hvordan skal du implementere konto:: tilbagekaldelse ()?
Lad os spørge banklederen om hjælp. Konversationen kan gå noget som følger:
"Hvad er reglerne for at gøre en tilbagetrækning fra en konto? " du spørger.
"Hvilken type konto? Besparelser eller kontrol? "Kommer svaret.
"Fra en konto" siger du. "Bare en konto. "
Blank udseende.
Problemet er, at spørgsmålet ikke giver mening. Der er ikke sådan noget som "bare en konto. "Alle konti (i dette eksempel) kontrollerer enten konti eller opsparingskonti. Konceptets koncept er en abstrakt, der faktoriserer egenskaber, der er fælles for de to konkrete klasser.
Det er ufuldstændigt, fordi det mangler den kritiske tilbagekaldelse af ejendomme () . (Når du kommer nærmere ind i detaljerne, kan du finde andre egenskaber, som en enkel konto mangler.)
En abstrakt klasse er en, der kun findes i underklasser. En konkret klasse er en klasse, der ikke er abstrakt.