Initializer

An initializer is a special method that prepares an instance of a class, structure, or enumeration for use. Initializers set up the initial state of an object by assigning values to its properties and performing any required setup.

Types of Initializers

1. Designated Initializer
  • The primary initializer for a class, struct, or enum.
  • Ensures that all properties are initialized.
  • A class must have at least one designated initializer.
2. Convenience Initializer
  • A secondary initializer to provide additional customization or shortcuts.
  • Calls a designated initializer from the same class.
3. Failable Initializer
  • Returns nil if initialization fails.
  • Used when initialization can fail due to invalid input or conditions.
4. Required Initializer
  • Ensures that every subclass implements the initializer.
5. Default Initializer
  • Automatically provided for structs and classes that have all properties with default values.

1.Designated Initializer

struct Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

2.Convenience Initializer

Convenience initializers are used to simplify initialization by calling designated initializers

class Rectangle {
    var width: Double
    var height: Double

    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }

    convenience init(side: Double) {
        self.init(width: side, height: side)
    }



3.Failable Initializer

Use failable initializers when initialization might fail.

struct Temperature {
    var celsius: Double

    init?(celsius: Double) {
        if celsius < -273.15 {
            return nil // Initialization fails if below absolute zero
        }
        self.celsius = celsius
    }
}

if let temp = Temperature(celsius: -300) {
    print("Temperature: \(temp.celsius)°C")
} else {
    print("Invalid temperature.") 
}

 // Output: Invalid temperature.

4.Required Initializer

class Animal {
    var name: String

    required init(name: String) {
        self.name = name
    }
}

class Dog: Animal {
    required init(name: String) {
        super.init(name: name)
    }
}

let dog = Dog(name: "Buddy")
print(dog.name)  

// Output: Buddy

Leave a Reply

Your email address will not be published. Required fields are marked *