본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/SWIFT : GRAMMAR

Swift 기초 문법 - 추상 클래스

 

 

 

 

추상 클래스

 

 

💡 추상 클래스

 

추상화란? 

- 여러 객체나 개념에서 공통된 특징을 추출하여 이를 일반화하고 필요한 부분만을 노출시키는 것

- 특정한 타입에 의존하지 않고 일반화하여 작성  코드의 유지 보수성과 재사용성 상승

 
 
추상화의 목적
  • 복잡성 숨기기
    복잡한 내부 동작이나 세부 구현을 숨기고, 간단한 인터페이스를 제공하여 사용자가 코드를 더 쉽게 이해하고 사용할 수 있도록 함
  • 일반화와 모듈화
    추상화는 공통된 특징이나 동작을 추출하여 이를 일반화하고 모듈화함으로써 코드의 재사용성과 유지 보수성 상승 
  • 유연성과 확장성
    추상화된 인터페이스를 통해 코드의 일부를 변경하거나 확장할 수 있음
    이는 코드의 변경이나 기능의 추가에 대한 유연성을 제공하며 시스템을 더 쉽게 확장할 수 있도록 함
  • 사용자 중심 설계
    추상화는 사용자의 관점에서 중요한 부분에만 집중하고 필요한 기능을 노출시킴으로써 사용자 중심의 설계를 가능하게 함
    이는 사용자 경험을 향상시키고 사용자가 필요로 하는 기능에 집중할 수 있도록 함
  • 시스템의 이해도 향상
    추상화를 통해 시스템의 복잡성을 낮추고 중요한 부분에 집중함으로써 전체 시스템을 더 잘 이해하고 관리할 수 있음

 

 

추상 클래스란?
 

추상 클래스는 직접적으로 사용하는 것이 아니라 다른 클래스에서 상속받아 사용한다. 추상 클래스는 하나 이상의 추상 메서드(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!"를 출력
Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31