📖 Scenario: You are creating a simple program to represent animals. Each animal has a name and can make a sound. You want to create a base class for general animals and a subclass for a specific animal type.
🎯 Goal: Build a base class called Animal with a property and a method, then create a subclass called Dog that changes the sound it makes.
📋 What You'll Learn
Create a base class Animal with a name property and a makeSound() method
Create a subclass Dog that inherits from Animal
Override the makeSound() method in Dog to print a dog-specific sound
Create an instance of Dog and print its sound
💡 Why This Matters
🌍 Real World
Understanding base classes and subclasses helps organize code when many objects share common features but behave differently.
💼 Career
Inheritance is a key concept in object-oriented programming used in app development, game programming, and software design.
Progress0 / 4 steps
1
Create the base class Animal
Create a base class called Animal with a name property of type String and an initializer that sets name. Add a method called makeSound() that prints "Some generic animal sound".
Swift
Hint
Remember to create an initializer init(name: String) to set the name property.
2
Create the subclass Dog
Create a subclass called Dog that inherits from Animal. Override the makeSound() method to print "Woof!".
Swift
Hint
Use override keyword to change the behavior of makeSound() in the subclass.
3
Create an instance of Dog
Create a variable called myDog and assign it an instance of Dog with the name "Buddy".
Swift
Hint
Use let myDog = Dog(name: "Buddy") to create the instance.
4
Call makeSound() on myDog
Call the makeSound() method on the myDog instance to print the dog's sound.
Swift
Hint
Use myDog.makeSound() to call the method.
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
Step 1: Understand the role of a base class
A base class defines common properties and methods that other classes can reuse.
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.
Final Answer:
To provide a general template for other classes to build upon -> Option B
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
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.
Step 2: Match options to syntax
class Dog: Animal { } uses class Dog: Animal { }, which is correct. Other options use incorrect keywords or symbols.
Final Answer:
class Dog: Animal { } -> Option C
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
The subclass Car overrides the sound() method to return "Beep" instead of the base class "Vroom".
Step 2: Identify which method is called
When calling myCar.sound(), the overridden method in Car runs, returning "Beep".
Final Answer:
"Beep" -> Option A
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
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.
Step 2: Identify missing override keyword
The speak() method in Cat lacks override, causing a compile error.
Final Answer:
Missing override keyword before speak() in subclass -> Option D
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
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.
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().
Final Answer:
Option A code correctly implements all requirements -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.