Classes in Swift

A class is a data type that represents a reference type in Swift. Classes are similar to structs, but they are more powerful and flexible, and they are designed to be used as reference types rather than value types.

To define a class in Swift, you use the class keyword followed by the name of the class and a set of braces that contain the class’s properties and methods. Here is an example of how you can define a class that represents a point in two-dimensional space:

class Point { 
  var x: Int 
  var y: Int 
  
  init(x: Int, y: Int) { 
    self.x = x self.y = y 
  } 
}

This class has two properties, x and y, that represent the coordinates of the point. It also has an initializer, which is a special method that is used to create instances of the class.

To create an instance of a class, you use the class’s name followed by the values for its properties in parentheses. Here is an example of how you can create a Point instance and access its properties:

var p = Point(x: 0, y: 0) 
print(p.x) // prints 0 
print(p.y) // prints 0

In addition to defining properties, classes can also have methods, which are functions that are associated with the class and can operate on its properties. Here is an example of how you can add a method to the Point class that calculates the distance between two points:

class Point { 
  var x: Int 
  var y: Int 
  
  init(x: Int, y: Int) { 
    self.x = x self.y = y 
  } 
  
  func distance(to point: Point) -> Double { 
    let dx = Double(x - point.x) 
    let dy = Double(y - point.y) 
    
    return sqrt(dx * dx + dy * dy) 
  } 
}

This method calculates the Euclidean distance between the current point and the point passed as an argument. To call this method, you would use the following code:

let p1 = Point(x: 0, y: 0) 
let p2 = Point(x: 3, y: 4) 
let d = p1.distance(to: p2) // d is equal to 5.0

Classes are an important feature of Swift, and they are commonly used to define custom reference types for use in your code. For more information about classes and how to use them, you can refer to the Swift documentation.