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