[Swift] 클래스와 상속, super와 override

2023. 2. 8. 14:00·Apple/Swift
728x90
반응형

1. 클래스란?

Swift에서 클래스는 객체 지향 프로그래밍(OOP)의 기본 빌딩 블록입니다. 해당 클래스 유형의 개체가 가질 수 있는 속성과 동작을 정의하는 청사진입니다. 클래스는 개체라고도 하는 인스턴스를 만들기 위한 템플릿 또는 프로토타입 역할을 합니다.

 

클래스에서 데이터를 저장하는 속성과 작업을 수행하거나 기능을 제공하는 메서드를 정의할 수 있습니다.

속성은 이름, 사용 기간 또는 색상과 같은 개체의 특성 또는 특성을 나타냅니다. 반면에 메서드는 개체가 수행할 수 있는 작업 또는 동작을 정의하는 클래스와 관련된 함수입니다.

 

Swift의 클래스는 상속을 지원하므로 수퍼클래스에서 속성과 메서드를 상속하는 하위클래스를 만들 수 있습니다. 이렇게 하면 코드 재사용이 용이해지고 기능이 추가되거나 수정된 ​​특수 버전의 클래스를 만들 수 있습니다.

 

클래스를 사용하면 각각 고유한 상태와 동작이 있는 동일한 청사진을 기반으로 개체의 여러 인스턴스를 만들 수 있습니다. 클래스에서 생성된 개체는 서로 상호 작용하고 다른 클래스의 개체와 상호 작용할 수 있으므로 OOP 원칙을 사용하여 구축된 복잡한 소프트웨어 시스템의 기반을 형성합니다.

2. 부모 클래스와 자식 클래스

  • 상속된 클래스는 부모 클래스의 모든 기능을 상속 받으며, 자신만의 기능을 추가할 수 있다.
  • 상속받은 클래스들은 하위 클래스(subclass) 또는 자식 클래스(child class)라고 부른다.
  • 하위 클래스가 상속받은 클래스는 부모 클래스(parent class) 또는 상위 클래스(super class)라고 부른다.
  • 단일 상속(single inheritance)
  • 스위프트에서 하위 클래스는 단 하나의 부모 클래스만 상속 받을 수 있다.

3. 상속

  • 상속은 쉽게 말해서 부모 클래스가 가진 것을 자식 클래스가 물려 받는 것이다.
  • class 자식:부모 { }
  • 부모 클래스는 하나만 가능하다.
  • 콜론 다음이 여러 개이면 나머지는 프로토콜이다.
  • class 클래스명:부모명, 프로토콜명{}
  • 부모가 있으면 부모 다음에 표기한다.
  • class 클래스명:부모명, 프로토콜명1, 프로토콜명2 {}
  • class 클래스명:프로토콜명{} (부모가 없으면 바로 표기 가능하다)
  • class 클래스명: 프로토콜명1, 프로토콜명2{ }
  • 상속은 클래스만 가능하다.
  • 클래스, 구조체(struct), 열거형(enum), extension에 프로토콜은 채택(adopt)할 수 있다.

4. super

  • 부모 메서드 호출 시 사용한다.

5. override

  • override란 하위 클래스는 슈퍼클래스로부터 상속되는 인스턴스 메서드, 유형 메서드, 인스턴스 속성, 유형 속성 또는 구독자의 고유한 사용자 지정을 구현하는 것이다.
  • 즉, 다시 말해서 슈퍼클래스로부터 상속받은 메서드, 프로퍼티들을 재정의하는 키워드이다.
  • override는 부모와 자식에 같은 메서드가 있으면 자식이 우선이다.

  • 부모와 자식에 display()라는 메서드가 있어서 Student클래스는 display() 메서드가 2개이다.
  • Student클래스의 인스턴트 lee가 display()를 호출할 때, 자식클래스가 새로 만든 display() 메서드가 우선적으로 호출되려면 func 앞에 override 키워드를 쓴다.

 

 

 

728x90
반응형
저작자표시 (새창열림)

'Apple > Swift' 카테고리의 다른 글

[Swift] 프로토콜(protocol)  (0) 2023.02.11
[Swift] 익스텐션과 접근 제어  (0) 2023.02.09
[Swift] computed property, stored property, self, overloading  (0) 2023.02.01
[Swift] 클래스, 객체, 인스턴스  (0) 2023.01.31
[Swift] 함수와 메서드  (0) 2023.01.26
'Apple/Swift' 카테고리의 다른 글
  • [Swift] 프로토콜(protocol)
  • [Swift] 익스텐션과 접근 제어
  • [Swift] computed property, stored property, self, overloading
  • [Swift] 클래스, 객체, 인스턴스
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    combine
    클래스
    제어문
    운영체제
    Optional
    배열
    UIKit
    SWIFT
    티스토리챌린지
    swiftUI
    디자인패턴
    ios
    프로퍼티 래퍼
    비동기
    Xcode
    Vision Pro
    변수
    옵셔널
    이니셜라이저
    자바스크립트
    visionOS
    Initializers
    스위프트
    프로세스
    코딩테스트
    함수
    오블완
    연산자
    메서드
    네트워크
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] 클래스와 상속, super와 override
상단으로

티스토리툴바