Bird
Raised Fist0
Swiftprogramming~10 mins

Overriding methods and properties in Swift - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Overriding methods and properties
Define base class
↓
Define method/property
↓
Define subclass
↓
Override method/property
↓
Create subclass instance
↓
Call overridden method/property
↓
Execute subclass version
↓
End
This flow shows how a subclass replaces a base class method or property with its own version when called.
Execution Sample
Swift
class Animal {
    func sound() -> String {
        return "Some sound"
    }
}

class Dog: Animal {
    override func sound() -> String {
        return "Bark"
    }
}

let pet = Dog()
print(pet.sound())
This code defines a base class Animal with a method sound, then a subclass Dog overrides sound to return "Bark". It creates a Dog instance and prints its sound.
Execution Table
StepActionEvaluationResult
1Define class Animal with method sound()Method sound returns "Some sound"Animal.sound() ready
2Define subclass Dog overriding sound()Dog.sound() returns "Bark"Dog.sound() ready
3Create instance pet of Dogpet is Dog instancepet created
4Call pet.sound()Calls overridden Dog.sound()Returns "Bark"
5Print resultOutput printedBark
6EndNo more codeExecution stops
💡 Execution stops after printing overridden method result
Variable Tracker
VariableStartAfter Step 3Final
petnilDog instanceDog instance
Key Moments - 2 Insights
Why does pet.sound() print "Bark" instead of "Some sound"?
Because pet is an instance of Dog, and Dog overrides the sound() method. See execution_table step 4 where the overridden Dog.sound() is called.
What does the override keyword do?
It tells Swift that the subclass method replaces the base class method. Without override, the compiler gives an error. See execution_table step 2 where Dog.sound() is defined with override.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output printed at step 5?
A"Some sound"
B"Bark"
C"Woof"
DNo output
💡 Hint
Check the Result column at step 5 in execution_table.
At which step is the Dog instance created?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the Action column for instance creation in execution_table.
If we remove the override keyword from Dog.sound(), what happens?
ACompiler error occurs
BCode runs normally, prints "Bark"
CBase class method is called instead
DDog.sound() is ignored
💡 Hint
Recall key_moments explanation about the override keyword necessity.
Concept Snapshot
class BaseClass {
    func method() -> ReturnType { ... }
}

class SubClass: BaseClass {
    override func method() -> ReturnType { ... }
}

- Use override to replace base class methods or properties.
- Calls on subclass instances use overridden versions.
- Compiler enforces override keyword for safety.
Full Transcript
This example shows how a subclass in Swift can replace a method from its base class by overriding it. The base class Animal has a method sound() that returns "Some sound". The subclass Dog overrides sound() to return "Bark". When we create an instance of Dog and call sound(), the overridden Dog version runs, printing "Bark". The override keyword is required to tell Swift this is intentional. Without it, the code will not compile. This behavior lets subclasses customize or extend base class behavior safely.

Practice

(1/5)
1.

What keyword must you use in Swift to change a method from a parent class in a subclass?

easy
A. override
B. super
C. extend
D. inherit

Solution

  1. Step 1: Understand method overriding in Swift

    Swift requires a special keyword to indicate a method is being changed in a subclass.
  2. Step 2: Identify the correct keyword

    The keyword to override a method or property is override.
  3. Final Answer:

    override -> Option A
  4. Quick Check:

    Keyword to change parent method = override [OK]
Hint: Use 'override' before methods to change them in subclasses [OK]
Common Mistakes:
  • Using 'super' instead of 'override'
  • Forgetting the 'override' keyword
  • Using 'extend' which is not a Swift keyword
2.

Which of the following is the correct syntax to override a method named greet() in Swift?

class Parent {
    func greet() {
        print("Hello")
    }
}

class Child: Parent {
    ??? func greet() {
        print("Hi")
    }
}
easy
A. override
B. super
C. func override
D. override func

Solution

  1. Step 1: Recall Swift override syntax

    In Swift, the keyword override comes before the func keyword.
  2. Step 2: Match the correct syntax

    The correct syntax is override func greet().
  3. Final Answer:

    override func -> Option D
  4. Quick Check:

    Keyword order is 'override func' [OK]
Hint: Write 'override' before 'func' to override methods [OK]
Common Mistakes:
  • Writing 'func override' instead of 'override func'
  • Using 'super' keyword instead of 'override'
  • Omitting 'override' keyword entirely
3.

What will be the output of the following Swift code?

class Animal {
    func sound() {
        print("Some sound")
    }
}

class Dog: Animal {
    override func sound() {
        print("Bark")
    }
}

let pet: Animal = Dog()
pet.sound()
medium
A. Some sound
B. Bark
C. Compile error
D. Runtime error

Solution

  1. Step 1: Understand method overriding and polymorphism

    Even though the variable type is Animal, the actual object is Dog, so overridden method runs.
  2. Step 2: Identify which method is called

    The Dog's overridden sound() method prints "Bark".
  3. Final Answer:

    Bark -> Option B
  4. Quick Check:

    Overridden method runs on subclass instance [OK]
Hint: Overridden methods run on subclass instances even if typed as parent [OK]
Common Mistakes:
  • Thinking parent method runs because variable type is Animal
  • Expecting compile or runtime error
  • Confusing method overriding with overloading
4.

Identify the error in this Swift code that tries to override a property:

class Vehicle {
    var speed: Int = 0
}

class Car: Vehicle {
    var speed: Int = 100
}
medium
A. Missing 'override' keyword before 'var speed' in subclass
B. Cannot override properties in Swift
C. Property types must differ when overriding
D. Superclass property must be 'let' to override

Solution

  1. Step 1: Check property overriding rules

    To override a property in Swift, you must use the override keyword.
  2. Step 2: Identify missing keyword

    The subclass property speed lacks the override keyword, causing an error.
  3. Final Answer:

    Missing 'override' keyword before 'var speed' in subclass -> Option A
  4. Quick Check:

    Override properties need 'override' keyword [OK]
Hint: Always add 'override' before properties you change in subclass [OK]
Common Mistakes:
  • Forgetting 'override' keyword on properties
  • Thinking properties cannot be overridden
  • Changing property type when overriding
5.

Given this Swift code, what will be printed?

class Person {
    var description: String {
        return "Person"
    }
}

class Student: Person {
    override var description: String {
        return super.description + " - Student"
    }
}

let s = Student()
print(s.description)
hard
A. Person
B. Student
C. Person - Student
D. Compile error due to super usage

Solution

  1. Step 1: Understand property overriding with super

    The subclass overrides description and calls super.description to get parent value.
  2. Step 2: Combine parent and subclass strings

    The returned string is "Person" + " - Student" = "Person - Student".
  3. Final Answer:

    Person - Student -> Option C
  4. Quick Check:

    super.property adds parent value [OK]
Hint: Use 'super' to include parent property value when overriding [OK]
Common Mistakes:
  • Expecting only 'Student' without parent text
  • Thinking 'super' causes compile error
  • Not using 'override' keyword on property
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard