Video: [C++ von { bis }] 14 - Abstrakte Klassen 2024
Som intellektuellt tillfredsställande som factoring finns i C ++ introducerar det ett eget problem. I ett exempel om bankkontoklasser, specifikt den vanliga basklassen Konto. Tänk på en minut om hur du kan göra om att definiera de olika medlemsfunktionerna som definieras i Konto.
De flesta Konto medlemsfunktioner är inga problem eftersom båda kontotyperna implementerar dem på samma sätt. Genomförandet av dessa gemensamma funktioner med Konto :: uttag () är emellertid olika.
Reglerna för uttag från ett sparkonto är annorlunda än de som tas ut från ett checkkonto. Du måste genomföra Spara:: uttag () annorlunda än du gör Kontrollera:: uttag () . Men hur ska du genomföra Konto:: uttag ()?
Låt oss fråga bankchefen om hjälp. Samtalet kan gå något som följande:
"Vilka regler gäller för att göra ett uttag från ett konto? " du frågar.
"Vilken typ av konto? Besparingar eller kontroll? "Kommer svaret.
"Från ett konto" säger du. "Bara ett konto. "
Blank look.
Problemet är att frågan inte är meningsfull. Det finns inget sådant som "bara ett konto. "Alla konton (i det här exemplet) kontrollerar antingen konton eller sparkonto. Konceptet är ett abstrakt som utmärker egenskaper som är gemensamma för de två konkreta klasserna.
Det är ofullständigt eftersom det saknar den kritiska egendomsavdraget () . (Efter att du har kommit in i detaljerna kan du hitta andra egenskaper som ett enkelt konto saknar.)
En abstrakt klass är en som endast existerar i underklasser. En betongklass är en klass som inte är abstrakt.