- Swift Tutorial
- Swift - Home
- Swift - Overview
- Swift - Environment
- Swift - Basic Syntax
- Swift - Variables
- Swift - Constants
- Swift - Literals
- Swift - Comments
- Swift Operators
- Swift - Operators
- Swift - Arithmetic Operators
- Swift - Comparison Operators
- Swift - Logical Operators
- Swift - Assignment Operators
- Swift - Bitwise Operators
- Swift - Misc Operators
- Swift Advanced Operators
- Swift - Operator Overloading
- Swift - Arithmetic Overflow Operators
- Swift - Identity Operators
- Swift - Range Operators
- Swift Data Types
- Swift - Data Types
- Swift - Integers
- Swift - Floating-Point Numbers
- Swift - Double
- Swift - Boolean
- Swift - Strings
- Swift - Characters
- Swift - Type Aliases
- Swift - Optionals
- Swift - Tuples
- Swift - Assertions and Precondition
- Swift Control Flow
- Swift - Decision Making
- Swift - if statement
- Swift - if...else if...else Statement
- Swift - if-else Statement
- Swift - nested if statements
- Swift - switch statement
- Swift - Loops
- Swift - for in loop
- Swift - While loop
- Swift - repeat...while loop
- Swift - continue statement
- Swift - break statement
- Swift - fall through statement
- Swift Collections
- Swift - Arrays
- Swift - Sets
- Swift - Dictionaries
- Swift Functions
- Swift - Functions
- Swift - Nested Functions
- Swift - Function Overloading
- Swift - Recursion
- Swift - Higher-Order Functions
- Swift Closures
- Swift - Closures
- Swift-Escaping and Non-escaping closure
- Swift - Auto Closures
- Swift OOps
- Swift - Enumerations
- Swift - Structures
- Swift - Classes
- Swift - Properties
- Swift - Methods
- Swift - Subscripts
- Swift - Inheritance
- Swift-Overriding
- Swift - Initialization
- Swift - Deinitialization
- Swift Advanced
- Swift - ARC Overview
- Swift - Optional Chaining
- Swift - Error handling
- Swift - Concurrency
- Swift - Type Casting
- Swift - Nested Types
- Swift - Extensions
- Swift - Protocols
- Swift - Generics
- Swift - Access Control
- Swift - Function vs Method
- Swift - SwiftyJSON
- Swift - Singleton class
- Swift Random Numbers
- Swift Opaque and Boxed Type
- Swift Useful Resources
- Swift - Compile Online
- Swift - Quick Guide
- Swift - Useful Resources
- Swift - Discussion
Swift - Classes
Classes in Swift are building blocks of flexible constructs. Similar to constants, variables and functions the user can define class properties and methods. Swift provides us with the functionality that while declaring classes the users need not create interfaces or implementation files. Swift allows us to create classes as a single file and the external interfaces will be created by default once the classes are initialized.
Benefits of having Classes
Inheritance acquires the properties of one class to another class.
Type casting enables the user to check class type at run time.
Deinitializers take care of releasing memory resources.
Reference counting allows the class instance to have more than one reference.
Common Characteristics of Classes and Structures
Properties are defined to store values
Subscripts are defined as providing access to values
Methods are initialized to improve functionality
Initial states are defined by initializers
Functionality is expanded beyond default values
Confirming protocol functionality standards
Definition of a Class in Swift
In Swift, a class is defined using a class keyword along with the name of the class and curly braces({}). The name of the class always starts with a capital letter such as Employee, not employee and the curly braces contain an initializer, properties methods of the class.
Properties − The constants and variables associated with the class are known as the properties of the structure. They are commonly used to define the characteristics of the class. A class can have multiple properties.
Methods − Functions associated with the class are known as the methods of the class. They are commonly used to define behaviour associated with the class. They can have parameters and return values. A single class can have multiple methods.
Initializer − It is a special method associated with a class. An initializer is used to set up the initial state of a class instance. It is defined using the init keyword. It is called when we create an instance of the class. It can have parameters and default values.
Syntax
Following is the syntax of the class −
class nameClass { // Properties Property 1 : Type Property 2 : Type // Initializer init(){ // statement } // Methods func functionName(){ // Statement } }
Example
In the following Swift example, we create a class named markStruct with three properties such as studname of String type, mark and mark2 of Int type.
class student{ var studname: String var mark: Int var mark2: Int }
Swift Class Object
An object is known as the instance of the class. It is created according to the blueprint defined by the class. A single class can have multiple objects and they are independent of each other, which means if we modify one instance that doesn't affect other instances. We can create an object of the class by calling the class initializer. Using this initializer, we can initialize each property by passing the initial value along with the name of the property.
Syntax
Following is the syntax of the class instance −
var objectName = ClassName(propertyName1: Value, propertyName2: value)
Example
In the following Swift example, we will create an instance of Marks.
class Marks { var mark1: Int var mark2: Int var mark3: Int } // Creating a class object using an initializer var myObj = Marks(mark1: 10, mark2: 20, mark3: 30)
Accessing the Properties of the Class in Swift
To access the properties of the class we can use a class object followed by a dot(.) and the name of the property. We can also modify the values of the properties with the help of dot(.) syntax.
Syntax
Following is the syntax for accessing the properties of the class −
classObjectName.PropertyName
Following is the syntax for modifying the properties of the class −
classObjectName.PropertyName = value
Example
Swift program to access and modify the properties of a class.
// Defining a class struct Employee { var name: String var department: String var salary: Int // Initializer init(name: String, department: String, salary: Int){ self.name = name self.department = department self.salary = salary } } // Creating an instance of the Employee class var emp = Employee(name: "Suman", department: "Designing", salary: 33000) // Accessing the values of the properties using dot notation print("Employee Details:") print("Name: \(emp.name)") print("Department: \(emp.department)") print("Salary: \(emp.salary)") // Modifying the values of the properties using dot notation emp.salary = 40000 // Displaying the updated values print("\nUpdated Value:") print("Salary: \(emp.salary)")
Output
It will produce the following output −
Employee Details: Name: Suman Department: Designing Salary: 33000 Updated Value: Salary: 40000
Accessing the Methods of the Class in Swift
To access the methods of the class we can use dot notation. Here a class instance is followed by a dot(.) and a method name to access methods.
Syntax
Following is the syntax for accessing the method of the class −
classInstanceName.methodName
Example
Swift program to access the methods of the class.
// Defining a class class Parallelogram { // Properties of class var base: Double var height: Double // Initializer init(base: Double, height: Double){ self.base = base self.height = height } // Method to calculate the area of the Parallelogram func calculateParallelogramArea() -> Double { return base * height } } // Create an instance of the Parallelogram class var myObj = Parallelogram(base: 10.0, height: 9.0) // Calling the calculateParallelogramArea() method let area = myObj.calculateParallelogramArea() print("Area of the Parallelogram: \(area)")
Output
It will produce the following output −
Area of the Parallelogram: 90.0
Class as a Reference Type in Swift
In Swift, classes are reference types, which means that when we assign a class to a structure or constant or pass it to a function as a parameter, a reference of the existing object will used. So, when we make changes to one instance will reflect in all the references of that instance.
Example
Swift program to demonstrate class as a reference type.
// Defining a class class Student { // Properties var name: String var age: Int // Initializer init(name: String, age: Int){ self.name = name self.age = age } } // Creating an instance of the Student class var stud = Student(name: "Kunal", age: 22) // Assigning stud to details // Here details have the reference of stud object var details = stud // Modifying the values of the properties // Here the modification will affect the stud instance // because it passed as a reference-type details.name = "Mohina" details.age = 40 print("student 1: name-\(stud.name) and age-\(stud.age)") print("student 2: name-\(details.name) and age-\(details.age)")
Output
It will produce the following output −
student 1: name-Mohina and age-40 student 2: name-Mohina and age-40