Еще один не маловажный принцип ООП (Объектно ориентированного программирования), а именно Инкапсуляция.

Что же это такое?

Инкапсуляция — это когда в программе прячут детали, чтобы другие части программы или люди не могли напрямую изменять их.

Представь себе планшет. Ты видишь экран и кнопки, которыми можешь пользоваться, но не видишь, как работает всё внутри, потому что это спрятано. Программисты делают так же: они показывают только то, что нужно использовать, а всё важное спрятано внутри, чтобы его нельзя было случайно сломать или испортить.

Для реализации этого принципа используются специальные ключевые слова, которые называются модификаторами доступа.

Давайте пройдемся по каждому из них.

Internal

Этот модификатор доступа означает, что все части программы внутри проекта могут использовать что-то с пометкой internal. Его еще, за глаза, называют публичным, публичные свойства, публичные методы и так далее.

На примере будет понятно:

internal class Helper {
	internal var numbers: [Int] = []

	internal func addNumber(_ number: Int) {
		numbers.append(number)
	}
	
	internal func getNumbers() -> [Int] {
		numbers
	}
}

Все элементы данного класса и сам он, определенны с уровнем доступа internal, то есть у всех кто будет использовать экземпляр этого класса будет доступ к свойству numbers и к методам addNumber, getNumber:

let helper = Helper()

helper.numbers
helper.addNumber(3)
helper.getNumbers()

Где бы мы не использовали этот экземпляр в нашем приложении, мы сможем обратится к его свойствам и методам, так скажем, заглянуть во внутрь его содержимого.

По умолчанию, всё в Swift internal, поэтому явно прописывать этот уровень доступа не нужно:

class Helper {
	 var numbers: [Int] = []

	 func addNumber(_ number: Int) {
		 numbers.append(number)
	 }
	
	 func getNumbers() -> [Int] {
		 numbers
	 }
}

Private