Extention 확장 익스텐션은 기존 클래스, 구조체, 열거형 등 기존 코드를 변경하지 않고 기능을 추가하거나 수정할 수 있는 방법을 제공하여 유지보수와 확장성을 향상시키는데 유용하다. 익스텐션은 원래 있던 코드에 새로운 메서드 , 계산 속성 , 초기화 , 서브스크립트 , protocal 을 추가할 수 있다. extension ExtendedType { // 새로운 메서드 , 계산 속성 , 초기화 , 서브스크립트 등 }아래의 예시는 Int 타입에 squared 라는 계산 속성을 익스텐션을 통해 추가하여 새로운 기능을 추가하는 예시 이다. extension Int { var squared: Int { return self * self } } let number = 5 let squaredNumber = ..
Initializer 클래스, 구조체, 열거형 등 인스턴스를 생성하고 초기화 하는 메서드 이니셜라이저는 인스턴스의 모든 속성을 초기화 하여 사용 가능한 상태로 만든다. 초기화 할때 필요한 값을 전달하고 초기화 과정에서 다양한 작업을 수행할 수 있다. class Position { var x: Double var y: Double init(x: Double, y: Double) { self.x = x self.y = y } // Convenience Initializer convenience init(x: Double) { self.init(x: x, y: 0.0) } }Convenience Initializer 는 특정한 인스턴스에 값을 넣고 뺄 수 있도록 편리하게 구성 가능하다. 슈퍼클래스 이니셜라이저..
is 연산자 is 연산자는 특정 인스턴스가 지정된 타입인지 확인하는데 사용한다. 만약 인스턴스가 지정된 타입의 인스턴스라면 'true' 를 반환하고, 그렇지 않으면 'false' 를 반환합니다. class Animal { } class Dog: Animal { } let animal = Animal() let dog = Dog() print(animal is Animal) // 출력값 : true print(animal is Dog) // 출력값 : false Dog는 Animal을 상속받고 있으므로 is 관계가 될 수 없다. print(dog is Animal) // 출력값 : true print(dog is Dog) // 출력값 : trueas 연산자 as 연산자는 인스턴..
상속 부모 클래스의 특성과 동작을 자식 클래스가 물려받아 확장하고 수정할 수 있다. 이를 통해 코드의 재사용성과 구조화에 유용하다. class Figure { var name = "Unknown" init(name: String) { self.name = name } func draw() { print("draw \(name)") } } class Circle: Figure { var radius = 0.0 } let c = Circle(name: "Circle") c.radius c.name c.draw() class Rectangle: Figure { var width = 0.0 var height = 0.0 } class Square: Rectangle { }위 예제에서 Circle 은 Figure..
Instance Method 클래스 , 구조체 , 열거형 내 선언되는 함수이며, 이러한 메서드는 특정한 인스턴스에 속하는 동작이나 기능을 표현한다. 해당 인스턴스의 속성에 엑세스 하거나 상태를 변경하는데 사용 특정 인스턴스에 속해있음 : 이 메서드를 호출할 땐 해당 인스턴스의 이름을 사용하여 호출 인스턴스 속성에 접근 : 인스턴스 메서드는 동일한 인스턴스 내 속성에 접근할 수 있다. (self 키워드를 활용하여) 인스턴스 상태 변경 : 인스턴스 메서드는 해당 인스턴스의 상태를 변경할 수 있다. class MyClass { var property: Int init(property: Int) { self.property = property } func instanceMethod() { //인스턴스 메서드의 ..
계산 속성 (Computed Properties) 계산 속성은 클래스 , 구조체 , 열거형 내 값을 계산하여 반환하는 속성이다. 이 속성은 실제로 값을 저장하지 않고 속성에 접근할 때 마다 특정한 코드 블록(getter) 을 실행하여 값을 계산 , 반환한다. 계산 속성은 저장 속성과는 달리 값을 직접 저장하지 않지만, 값을 계산하기 위한 연산을 수행하는 코드 블록을 제공한다. (getter) 계산 속성은 값을 동적으로 생성하거나 계산할 때 유용하다. var propertyName: PropertyType { get { // 속성의 값을 계산하고 반환하는 코드 } set(newValue) { // 속성에 새 값을 할당하거나 다른 작업을 수행하는 코드 } }get 블록은 속성에 접근할 때 실행되며, 값을 반..