추상 클래스
💡 추상 클래스
추상화란?
- 여러 객체나 개념에서 공통된 특징을 추출하여 이를 일반화하고 필요한 부분만을 노출시키는 것
- 특정한 타입에 의존하지 않고 일반화하여 작성 → 코드의 유지 보수성과 재사용성 상승
추상화의 목적
- 복잡성 숨기기
복잡한 내부 동작이나 세부 구현을 숨기고, 간단한 인터페이스를 제공하여 사용자가 코드를 더 쉽게 이해하고 사용할 수 있도록 함 - 일반화와 모듈화
추상화는 공통된 특징이나 동작을 추출하여 이를 일반화하고 모듈화함으로써 코드의 재사용성과 유지 보수성 상승 - 유연성과 확장성
추상화된 인터페이스를 통해 코드의 일부를 변경하거나 확장할 수 있음
→ 이는 코드의 변경이나 기능의 추가에 대한 유연성을 제공하며 시스템을 더 쉽게 확장할 수 있도록 함 - 사용자 중심 설계
추상화는 사용자의 관점에서 중요한 부분에만 집중하고 필요한 기능을 노출시킴으로써 사용자 중심의 설계를 가능하게 함
→ 이는 사용자 경험을 향상시키고 사용자가 필요로 하는 기능에 집중할 수 있도록 함 - 시스템의 이해도 향상
추상화를 통해 시스템의 복잡성을 낮추고 중요한 부분에 집중함으로써 전체 시스템을 더 잘 이해하고 관리할 수 있음
추상 클래스란?
추상 클래스는 직접적으로 사용하는 것이 아니라 다른 클래스에서 상속받아 사용한다. 추상 클래스는 하나 이상의 추상 메서드(abstract method)를 포함하고 있으며, 이 추상 메서드는 메서드의 선언만 있고 실제 구현은 없는 메서드이다. 따라서 추상 클래스를 상속받은 하위 클래스에서는 반드시 이 추상 메서드를 구현해야 한다.
간단히 말해, 추상 클래스는 구체적인 구현이 없는 메서드를 가지고 있으며, 이를 상속받은 하위 클래스에서 필요한 대로 구현하여 사용하는 것이 주요한 특징이다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있다.
예시 참고
- 동물이라는 상위 클래스로부터 상속받아 구현
- 모두 동물이라는 클래스의 특징을 가짐
- 특징(속성) : 눈, 입, 다리 등
- 행동(메소드) : 숨쉰다, 먹는다, 움직인다
추상 클래스의 주요 규칙
- 추상 메서드 포함
추상 클래스는 하나 이상의 추상 메서드를 포함
→ 추상 메서드는 선언만 있고 실제 구현이 없는 메서드 - 하위 클래스에서 구현
추상 클래스를 상속하는 하위 클래스는 추상 메서드를 반드시 구현해야 함
→ 이것이 추상 클래스의 목적 중 하나, 각각의 하위 클래스에서 공통적인 동작이나 속성을 갖게 하고자 함 - 인스턴스 생성 불가능
추상 클래스는 직접적으로 인스턴스를 생성할 수 없음
대신 하위 클래스를 통해 인스턴스를 생성
→ 이것은 추상 클래스가 불완전하고 구체적인 구현이 없기 때문에 발생 - 일반 메서드 포함 가능
추상 클래스에는 추상 메서드 외에도 실제 구현된 일반 메서드가 포함될 수 있음
→ 이러한 메서드는 하위 클래스에서 오버라이딩할 필요가 없음 - 일반 속성 포함 가능
추상 클래스에는 추상 속성 외에도 일반 속성이 포함될 수 있음
→ 이러한 속성은 하위 클래스에서 사용될 수 있으며, 필요에 따라 오버라이딩될 수도 있음
추상 클래스 예시
protocol Animal {
func makeNoise() // Animal 프로토콜에는 makeNoise() 메서드가 정의되어 있음
}
class Dog: Animal { // Dog 클래스가 Animal 프로토콜을 채택함
func makeNoise() { // Animal 프로토콜의 요구사항에 따라 makeNoise() 메서드를 구현
print("Woof!") // Dog 클래스의 인스턴스가 makeNoise() 메서드를 호출하면 "Woof!"를 출력
}
}
class Cat: Animal { // Cat 클래스가 Animal 프로토콜을 채택함
func makeNoise() { // Animal 프로토콜의 요구사항에 따라 makeNoise() 메서드를 구현
print("Meow!") // Cat 클래스의 인스턴스가 makeNoise() 메서드를 호출하면 "Meow!"를 출력
}
}
let myDog: Animal = Dog() // Dog 클래스의 인스턴스를 Animal 타입의 변수에 할당
let myCat: Animal = Cat() // Cat 클래스의 인스턴스를 Animal 타입의 변수에 할당
myDog.makeNoise() // Dog 클래스의 makeNoise() 메서드를 호출하여 "Woof!"를 출력
myCat.makeNoise() // Cat 클래스의 makeNoise() 메서드를 호출하여 "Meow!"를 출력
' 𝗔𝗣𝗣𝗟𝗘 > SWIFT : GRAMMAR' 카테고리의 다른 글
Swift 기초 문법 - replacingOccurrences(of: with: ) (0) | 2024.03.07 |
---|---|
Swift 기초 문법 - 객체지향 5원칙(SOLID) (0) | 2024.03.06 |
Swift 기초 문법 - 함수 기본 형태 (0) | 2024.03.06 |
Swift 기초 문법 - 프로퍼티(Property) (0) | 2024.03.06 |
SWIFT 기초 문법(02) Unwrap, 클래스 vs 스트럭트, 프로퍼티 옵저버, 함수 매개변수, 제네릭, 클로저 (0) | 2024.02.14 |