Класс и объект в Swift
View more Tutorials:
Swift это язык унаследованный от языка C и Objective-C, он является и процедурным языком, и объектно-ориентированным языком. Класс (Class) является понятием объектно-ориентированного языка. Класс имеет атрибуты и методы, в действительности метод (method) понимается как функция класса. Из класса вы можете создать объекты.
Swift использует ключевое слово class чтобы объявить класс.

Создать исходный файл Rectangle.swift:
Rectangle.swift
import Foundation class Rectangle { // width property var width: Int = 5; // height property var height: Int = 10; // Constructor по умолчению (Нет параметра) // (Можно использовать для создания объекта) init() { } // Один Constructor имеет 2 параметра. // (Можно использовать для создания объекта) // self.width уканзывается на атрибут (property) width класса. init (width: Int, height: Int) { self.width = width self.height = height } // Метод используется для расчета площади прямоугольника. func getArea() -> Int { var area = self.width * self.height return area } }
Код использует класс Rectangle чтобы создать объекты.
RectangleTest.swift
import Foundation func test_rectangle() { print("Create a Rectangle rec1"); // Создать объект Rectangle // через Constructor по умолчанию: init() var rec1 = Rectangle() // Распечатать width, height. print("rec1.width = \(rec1.width)") print("rec1.height = \(rec1.height)") // Вызвать метод для расчета площади. var area1 = rec1.getArea() print("area1 = \(area1)") print("---------") print("Create a Rectangle rec2"); // Создать объект Rectangle // через Constructor с 2 параметрами: init(Int,Int) var rec2 = Rectangle(width: 10, height: 15) // Распечатать width, height. print("rec2.width = \(rec2.width)") print("rec2.height = \(rec2.height)") // Вызвать метод для расчета площади. var area2 = rec2.getArea() print("area2 = \(area2)") }
Редактировать файл main.swift чтобы протестировать пример:
main.swift
import Foundation test_rectangle()
Запуск примера:

Теперь вам нужно объяснить про класс, это очень важно.
Что происходит когда вы создаете объект методом конструктора по умолчанию (default constructor)?

Создать объект Rectangle методом конструктора с 2 параметрами.

Правила Swift 2.1 вызова йункции (function), метода (method),и конструктора (constructor):
- Первый параметр передается функции (или методу) не требуя метки (Label)
- Другие параметры передающиеся функции (или методу) требуется иметь метку.
- Все параметры передающиеся в Constructor должны иметь метку (Label)
В Swift, когда вы создаете объект через конструктор (Constructor) реальный объект создается в памяти, и имеет определенный адрес.
Оператор назначает объект AA объектом BB не создавая новые объекты в памяти, это просто указывающий адрес от AA до адреса BB.
Оператор назначает объект AA объектом BB не создавая новые объекты в памяти, это просто указывающий адрес от AA до адреса BB.

Оператор === использованный для сравнения 2 указывающих объектов, возвращает true если 2 объекта указывают на одинаковый адрес в памяти. Оператор !== использованный для сравнения 2 адресов 2 указывающих объектов, возвращает true если 2 объекта указывают на 2 разных адреса.
IdentifyOperator.swift
import Foundation func identifyOperator() { // Создать объект: r1 var r1 = Rectangle(width: 20,height: 10) // Создать объект: r2 var r2 = Rectangle(width: 20,height: 10) var r3 = r1 var b12:Bool = r1 === r2 var b13:Bool = r1 === r3 print("r1 === r2 ? \(b12)") // false print("r1 === r3 ? \(b13)") // true var bb12: Bool = r1 !== r2 var bb13: Bool = r1 !== r3 print("r1 !== r2 ? \(b12)") // true print("r1 !== r3 ? \(b13)") // false }
Запуск примера:
