Конкретный тип против абстрактного
В Swift имеются различные типы категорий, включая два фундаментальных понятия: конкретные и абстрактные типы.
Что такое «конкретный тип»?
Конкретный тип непосредственно инстанцируется для создания объектов:
1. Определяются все свойства и методы.
2. Примеры конкретных типов — классы и структуры.
Простой конкретный тип
struct Person {
var name: String
var age: Int
}
let person = Person(name: "John", age: 20)
print("Person name \(person.name) Age \(person.age)")
Конкретный тип с использованием класса
class Employee {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func empActiveStatus() {
print("Active")
}
}
let employee = Employee(name: "Jones", age: 35)
print("Employe name \(employee.name) Age \(employee.age)")
print("Active Status \(employee.empActiveStatus())")
Что такое «абстрактный тип»?
Это тип, которым определяется набор требований без фактической реализации:
1. Требования относятся к свойствам и методам.
2. Абстрактный тип не инстанцируется напрямую.
protocol Shape {
func area() -> Double
}
struct Circle: Shape {
var radius: Double
func area() -> Double {
return Double.pi * radius * radius
}
}
struct Square: Shape {
var side: Double
func area() -> Double {
return side * side
}
}
let circle = Circle(radius: 5.0)
print("Area of circle: ", circle.area())
let square = Square(side: 5.0)
print("Area of square: ", square.area())Как получают абстрактный тип?
Продолжение
Часть 1.
