Testa dig själv — OOP
Utan att kolla:
- Vad är skillnaden mellan en klass och ett objekt?
Visa svar
En klass är ritningen — den beskriver hur något ska se ut och bete sig. Ett objekt är en konkret instans av den ritningen. class Car { ... } är ritningen; var minCar = new Car() skapar ett faktiskt objekt i minnet.
- Vad är syftet med
privatepå ett fält?
Visa svar
private hindrar kod utanför klassen från att läsa eller ändra fältet direkt. Det är kärnan i inkapsling — klassen kontrollerar hur data ändras, t.ex. via properties med validering.
- Varför används en konstruktor?
Visa svar
Konstruktorn körs automatiskt när ett objekt skapas med new. Den ser till att objektet är i ett giltigt starttillstånd — rätt värden är satta från början, inte råkar vara null eller 0 av misstag.
- Vad heter nyckelordet som markerar att subklasser får skriva sin egen version av en metod?
Visa svar
virtual. Utan virtual på basklassens metod kan en subklass inte override den. Det är öppet/stängt-principen i praktiken: basklassen är stängd för ändring men öppen för utökning via virtual + override.
- Vad gör
: base(name)i en subklasses konstruktor?
Visa svar
Det anropar basklassens konstruktor och skickar vidare argumentet. Utan det vet inte basklassen att den ska initieras — och om basklassen saknar en parameterlös konstruktor kompilerar det inte alls.
- Vad händer om du skapar
class Orm : Animalmen inte skriveroverride PlaySound()?
Visa svar
Ormen ärver basklassens version av PlaySound() — alltså standardbeteendet från Animal. Inget kompileringsfel. Men polymorfism fungerar inte som du kanske vill: orm.PlaySound() kör Animal-versionen, inte en orm-specifik.
- Vad är skillnaden mellan
overrideoch metodöverlagring (overloading)?
Visa svar
Override — en subklass ersätter/utökar en virtual-metod från basklassen. Samma namn, samma parametrar, annan klass.
Overloading — samma klass har flera metoder med samma namn men olika parametrar. Kompilatorn väljer rätt version baserat på argumenten du skickar.