Swift
programming
stored property
property overriding
Swift development

Overriding a stored property in Swift

Interview Questions practice on Codemia

Over 8,000 real interview questions from top companies, searchable by company and role.

Browse interview questions

Introduction

Swift is a powerful and intuitive programming language for macOS, iOS, watchOS, and tvOS app development. One of its key features is the ability to override members of a class, such as methods, properties, and subscripts. However, when it comes to stored properties, Swift's behavior is unique due to its emphasis on performance and safety. This article delves into the mechanics behind overriding a stored property in Swift, providing technical insights and practical examples.

Understanding Swift Properties

Before diving into stored property overrides, it's essential to understand Swift's property types:

  1. Stored Properties: These are constants or variables that are stored as part of an instance.
  2. Computed Properties: Rather than storing a value directly, these properties provide a getter and an optional setter to retrieve and set other properties and values indirectly.
  3. Lazy Stored Properties: These are properties whose initial values are calculated when they're first used.
  4. Property Observers: These are used to observe and respond to changes in a property's value.

Overriding in Swift

Overriding is a core part of object-oriented programming, allowing subclasses to provide a specific implementation of a method, property, or subscript that it inherits from its superclass.

Can We Override Stored Properties?

In Swift, stored properties cannot be overridden in the traditional manner. This limitation ensures that property storage layout is consistent and efficient within the memory model. However, you can override a stored property by utilizing a computed property in the subclass.

Example: Overriding with Computed Properties

Here's a practical example:

  • The `Child` class overrides the `storedProperty` from the `Parent` class by providing a computed property with custom getter and setter methods.
  • This allows `Child` to customize how the `storedProperty` behaves, while still adhering to Swift's memory management needs.
  • Flexibility: Compute-only property logic.
  • Encapsulation: Control over the property’s behavior.
  • Complexity: Additional logic to handle property as computed rather than stored.
  • Dependency: Relies on getter and setter for value access.

Related reading
Free course
Beginner
7 lessons
2 hours
Tackling System Design Interview Problems

A short course that equips you with the skills to approach system design interviews methodically.

Start the free course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

Interview Questions practice on Codemia

Over 8,000 real interview questions from top companies, searchable by company and role.

Browse interview questions

All Rights Reserved.