Bird
Raised Fist0
Swiftprogramming~10 mins

Base class and subclass in Swift - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Base class and subclass
Define Base Class
↓
Define Subclass inheriting Base
↓
Create Subclass Object
↓
Access Base and Subclass Properties/Methods
↓
Use Overridden Methods if any
↓
Program Ends
This flow shows how a subclass inherits from a base class, creates an object, and accesses properties and methods.
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())
Defines a base class Animal and subclass Dog that overrides a method; then creates a Dog and prints its sound.
Execution Table
StepActionEvaluationResult
1Define class Animal with method sound()No outputAnimal class ready
2Define subclass Dog inheriting Animal, override sound()No outputDog class ready
3Create instance pet of Dogpet is Dog objectpet created
4Call pet.sound()Calls Dog's overridden sound()"Bark" returned
5Print pet.sound()Output to consoleBark
6Program endsNo further actionExecution complete
💡 Program ends after printing the overridden method result from subclass instance
Variable Tracker
VariableStartAfter Step 3After Step 4Final
petnilDog instanceDog instanceDog instance
Key Moments - 2 Insights
Why does pet.sound() print "Bark" and not "Some sound"?
Because pet is an instance of Dog, which overrides the sound() method from Animal. See execution_table step 4 where Dog's method is called.
What happens if Dog does not override sound()?
Then calling pet.sound() would use Animal's sound() method and print "Some sound". This is shown by the inheritance in execution_table steps 2 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at step 5?
A"Some sound"
B"Bark"
CNo output
DError
💡 Hint
Check the 'Result' column at step 5 in the execution_table.
At which step is the Dog instance created?
AStep 1
BStep 4
CStep 3
DStep 5
💡 Hint
Look at the 'Action' column for instance creation in execution_table.
If Dog did not override sound(), what would pet.sound() return?
A"Some sound"
B"Bark"
Cnil
DError
💡 Hint
Refer to key_moments explanation about method overriding.
Concept Snapshot
Base class defines common behavior.
Subclass inherits and can override methods.
Create subclass object to use overridden methods.
Calling method on subclass uses subclass version if overridden.
If not overridden, base class method runs.
Full Transcript
This example shows how a base class Animal defines a method sound(). The subclass Dog inherits from Animal and overrides the sound() method to return "Bark". When we create an instance pet of Dog and call pet.sound(), the overridden method in Dog runs, printing "Bark". This demonstrates inheritance and method overriding in Swift.

Practice

(1/5)
1. What is the main purpose of a base class in Swift?
easy
A. To prevent other classes from inheriting
B. To provide a general template for other classes to build upon
C. To store data only without any functions
D. To create instances that cannot be used

Solution

  1. Step 1: Understand the role of a base class

    A base class defines common properties and methods that other classes can reuse.
  2. Step 2: Compare options with this role

    To provide a general template for other classes to build upon correctly states the base class is a general template. Other options describe incorrect or unrelated roles.
  3. Final Answer:

    To provide a general template for other classes to build upon -> Option B
  4. Quick Check:

    Base class = general template [OK]
Hint: Base class = general template for subclasses [OK]
Common Mistakes:
  • Thinking base class cannot be inherited
  • Confusing base class with instances
  • Assuming base class only stores data
2. Which of the following is the correct way to declare a subclass named Dog inheriting from a base class Animal in Swift?
easy
A. class Dog inherits Animal { }
B. class Dog extends Animal { }
C. class Dog: Animal { }
D. class Dog < Animal { }

Solution

  1. Step 1: Recall Swift subclass syntax

    In Swift, a subclass is declared using a colon (:) after the subclass name followed by the base class name.
  2. Step 2: Match options to syntax

    class Dog: Animal { } uses class Dog: Animal { }, which is correct. Other options use incorrect keywords or symbols.
  3. Final Answer:

    class Dog: Animal { } -> Option C
  4. Quick Check:

    Subclass syntax = colon (:) [OK]
Hint: Use colon (:) to inherit in Swift class declaration [OK]
Common Mistakes:
  • Using 'inherits' or 'extends' keywords (not Swift)
  • Using wrong symbols like <
  • Omitting the colon between subclass and base class
3. Consider this Swift code:
class Vehicle {
    func sound() -> String {
        return "Vroom"
    }
}

class Car: Vehicle {
    override func sound() -> String {
        return "Beep"
    }
}

let myCar = Car()
print(myCar.sound())

What will be printed when this code runs?
medium
A. "Beep"
B. "Vroom"
C. Compilation error
D. "Car"

Solution

  1. Step 1: Understand method overriding in subclass

    The subclass Car overrides the sound() method to return "Beep" instead of the base class "Vroom".
  2. Step 2: Identify which method is called

    When calling myCar.sound(), the overridden method in Car runs, returning "Beep".
  3. Final Answer:

    "Beep" -> Option A
  4. Quick Check:

    Overridden method runs = "Beep" [OK]
Hint: Overridden methods in subclass replace base methods [OK]
Common Mistakes:
  • Expecting base class method output
  • Confusing method override with overload
  • Thinking print shows class name
4. Identify the error in this Swift subclass declaration:
class Animal {
    func speak() {
        print("Animal sound")
    }
}

class Cat: Animal {
    func speak() {
        print("Meow")
    }
}
medium
A. Class names must be lowercase
B. Base class cannot have methods
C. Subclass cannot have methods with same name
D. Missing override keyword before speak() in subclass

Solution

  1. Step 1: Check method overriding rules in Swift

    When a subclass provides its own version of a base class method, it must use the override keyword.
  2. Step 2: Identify missing override keyword

    The speak() method in Cat lacks override, causing a compile error.
  3. Final Answer:

    Missing override keyword before speak() in subclass -> Option D
  4. Quick Check:

    Override keyword required for method override [OK]
Hint: Use override keyword when redefining base methods [OK]
Common Mistakes:
  • Forgetting override keyword
  • Thinking subclass methods cannot have same name
  • Assuming class names must be lowercase
5. You want to create a base class Employee with a property name and a method work() that prints "Working". Then create a subclass Manager that overrides work() to print "Managing team" and adds a new method holdMeeting() that prints "Meeting started".

Which code correctly implements this?
hard
A. class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { override func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } }
B. class Employee { var name: String func work() { print("Working") } } class Manager: Employee { func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } }
C. class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } }
D. class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { override func work() { print("Managing team") } }

Solution

  1. Step 1: Check base class implementation

    The base class Employee must have a name property with initializer and a work() method printing "Working". class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { override func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } } and C have correct base class with initializer.
  2. Step 2: Check subclass overrides and new method

    The subclass Manager must override work() with override keyword and add holdMeeting(). class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { override func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } } correctly uses override and adds holdMeeting(). class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } } misses override. class Employee { var name: String func work() { print("Working") } } class Manager: Employee { func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } } misses initializer in base class. class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { override func work() { print("Managing team") } } misses holdMeeting().
  3. Final Answer:

    Option A code correctly implements all requirements -> Option A
  4. Quick Check:

    Override + new method + initializer = class Employee { var name: String init(name: String) { self.name = name } func work() { print("Working") } } class Manager: Employee { override func work() { print("Managing team") } func holdMeeting() { print("Meeting started") } } [OK]
Hint: Use override keyword and add new methods in subclass [OK]
Common Mistakes:
  • Forgetting override keyword in subclass
  • Missing initializer in base class
  • Not adding new methods in subclass
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