Sobes.tech
Junior

What is inherited in the context of programming and iOS development?

sobes.tech AI

Answer from AI

Inheritance in the context of programming and iOS development (using Swift and Objective-C) is a mechanism that allows a new class (subclass or derived class) to inherit properties and methods from an existing class (superclass or base class).

  • In Swift:

    • Single inheritance of classes (a class can only inherit from one class).
    • Inheritance of stored and computed properties.
    • Inheritance of instance and type methods.
    • Inheritance of subscripts.
    • Overriding inherited properties, methods, and subscripts using the override keyword.
    • Using the final keyword to prevent further inheritance or overriding.
    // Parent class
    class Vehicle {
        var currentSpeed = 0.0
    
        func makeNoise() {
            // Empty implementation
        }
    
        func accelerate() {
            currentSpeed += 10
        }
    }
    
    // Child class inherits from Vehicle
    class Car: Vehicle {
        var numberOfDoors = 4
    
        override func makeNoise() {
            print("Beep beep!")
        }
    }
    
    let myCar = Car()
    myCar.accelerate() // Calls the parent class method
    myCar.makeNoise() // Calls the overridden method
    print(myCar.currentSpeed)
    
  • In Objective-C:

    • Single inheritance of classes.
    • Inheritance of instance variables (iVars), although access to them from subclasses is limited without explicit @public or properties.
    • Inheritance of instance and class methods.
    • Overriding inherited methods.
    • Inheritance from the base class NSObject (almost all classes inherit from it).
    // Parent class (.h file)
    @interface Animal : NSObject {
        NSString *name; // Instance variable
    }
    
    - (void)makeSound;
    @end
    
    // Parent class (.m file)
    @implementation Animal
    
    - (void)makeSound {
        NSLog(@"Generic animal sound");
    }
    
    @end
    
    // Child class (.h file)
    @interface Dog : Animal
    @end
    
    // Child class (.m file)
    @implementation Dog
    
    - (void)makeSound { // Override method
        NSLog(@"Woof woof!");
    }
    
    @end
    
    // Usage
    // Animal *myDog = [[Dog alloc] init];
    // [myDog makeSound]; // Will output "Woof woof!"
    

Inheritance in iOS development is often used to create hierarchies of UI elements (e.g., UIView, UILabel, UIButton), view controllers (UIViewController), and other framework components for code reuse and specialized behavior.