0
0
Swiftprogramming~10 mins

Protocol inheritance in Swift - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Protocol inheritance
Define Base Protocol
Define Derived Protocol: inherits Base
Create Struct/Class: conforms to Derived
Implement all requirements from Base + Derived
Use instance as Derived or Base Protocol
Protocol inheritance means one protocol can require everything from another, so a type conforming to the child protocol must implement all requirements from both.
Execution Sample
Swift
protocol A {
    func foo()
}

protocol B: A {
    func bar()
}

struct S: B {
    func foo() { print("foo") }
    func bar() { print("bar") }
}

let s = S()
s.foo()
s.bar()
Defines protocol A, then B inherits A. Struct S conforms to B, so it must implement foo() and bar(). Then calls both methods.
Execution Table
StepActionEvaluationResult
1Define protocol A with foo()No outputProtocol A ready
2Define protocol B inheriting A, adds bar()No outputProtocol B ready (inherits foo())
3Define struct S conforming to BNo outputS must implement foo() and bar()
4Implement foo() in SPrints 'foo' when calledfoo() implemented
5Implement bar() in SPrints 'bar' when calledbar() implemented
6Create instance s of SNo outputInstance s created
7Call s.foo()Calls foo()Output: foo
8Call s.bar()Calls bar()Output: bar
9End of programNo more actionsExecution stops
💡 Program ends after calling both foo() and bar() on instance s
Variable Tracker
VariableStartAfter 6After 7After 8Final
sundefinedinstance of Sinstance of Sinstance of Sinstance of S
Key Moments - 3 Insights
Why does struct S need to implement foo() even though it only says it conforms to protocol B?
Because protocol B inherits protocol A, it requires all methods from A too. So S must implement foo() from A and bar() from B, as shown in steps 3-5 of the execution_table.
What happens if S does not implement foo()?
The code will not compile because S does not fulfill all requirements of protocol B, which includes foo() from protocol A. This is implied in step 3 where S must implement both methods.
Can we use instance s as type A or B?
Yes, since S conforms to B which inherits A, s can be used as either protocol type. This is the purpose of protocol inheritance shown in the flow.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is printed when s.foo() is called at step 7?
A"foo"
B"bar"
CNothing
DError
💡 Hint
Check row 7 in execution_table where s.foo() is called and output is "foo"
At which step does struct S become required to implement both foo() and bar()?
AStep 2
BStep 5
CStep 3
DStep 6
💡 Hint
Look at step 3 in execution_table where S is defined conforming to B and must implement both methods
If protocol B did not inherit protocol A, what would change in the execution_table?
AS would need to implement foo() and bar() anyway
BS would only need to implement bar(), not foo()
CS could implement neither method
DProgram would not compile
💡 Hint
Protocol inheritance means B requires A's methods; without it, only B's own methods are required (see concept_flow)
Concept Snapshot
Protocol inheritance syntax:
protocol B: A { ... }
Means B includes all requirements of A.
A type conforming to B must implement all methods from A and B.
Use inheritance to build on protocols.
Allows flexible, reusable interfaces.
Full Transcript
This visual trace shows how protocol inheritance works in Swift. First, protocol A is defined with a method foo(). Then protocol B inherits A and adds method bar(). A struct S conforms to B, so it must implement both foo() and bar(). The execution table walks through defining protocols, struct, implementing methods, creating an instance, and calling methods. The variable tracker shows the instance s is created and used. Key moments clarify why S must implement foo() even though it only says it conforms to B, because B inherits A. The quiz questions check understanding of method calls, implementation requirements, and effects of inheritance. The snapshot summarizes the syntax and behavior of protocol inheritance. This helps beginners see step-by-step how protocol inheritance requires implementing all inherited methods.