야곰의 스위프트 프로그래밍
    • 01
      스위프트 시작하기
    • 시작 전 필독사항
      이름짓기, 콘솔로그, 문자열 보간법
    • 02
      문법
    • 상수와 변수
      기본 데이터 타입
      Any, AnyObject, nil
      컬렉션 타입
      함수 기본
      함수 고급
      조건문
      반복문
      옵셔널
      옵셔널 값 추출
      구조체
      클래스
      열거형
      값 타입과 참조 타입
      클로저
      다양한 클로저표현
      프로퍼티
      프로퍼티 감시자
      상속
      인스턴스의 생성과 소멸
      옵셔널 체이닝과 nil 병합 연산자
      타입캐스팅
      assert와 guard
      프로토콜
      익스텐션
      오류처리
    • 03
      고차함수 활용
    • 고차함수
    • 04
      마무리
    • 더 알아보기
    클래스
    배우기
    02 문법
    클래스

    정의 문법

    클래스는 참조 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다.

    class 이름 {
        /* 구현부 */
    }
    

    프로퍼티 및 메서드 구현

    클래스의 타입 메서드는 두 종류가 있습니다. 상속 후 재정의가 가능한 class 타입메서드, 상속 후 재정의가 불가능한 static 타입메서드가 있습니다. 자세한 내용은 상속 부분에서 다시 다룹니다.

    class Sample {
        // 가변 프로퍼티
        var mutableProperty: Int = 100 
    
        // 불변 프로퍼티
        let immutableProperty: Int = 100 
    
        // 타입 프로퍼티
        static var typeProperty: Int = 100 
    
        // 인스턴스 메서드
        func instanceMethod() {
            print("instance method")
        }
    
        // 타입 메서드
        // 재정의 불가 타입 메서드 - static
        static func typeMethod() {
            print("type method - static")
        }
    
        // 재정의 가능 타입 메서드 - class
        class func classMethod() {
            print("type method - class")
        }
    }
    

    클래스 사용

    
    // 인스턴스 생성 - 참조정보 수정 가능
    var mutableReference: Sample = Sample()
    
    mutableReference.mutableProperty = 200
    
    // 불변 프로퍼티는 인스턴스 생성 후 수정할 수 없습니다
    // 컴파일 오류 발생
    //mutableReference.immutableProperty = 200
    
    
    // 인스턴스 생성 - 참조정보 수정 불가
    let immutableReference: Sample = Sample()
    
    // 클래스의 인스턴스는 참조 타입이므로 let으로 선언되었더라도 인스턴스 프로퍼티의 값 변경이 가능합니다
    immutableReference.mutableProperty = 200
    
    // 다만 참조정보를 변경할 수는 없습니다
    // 컴파일 오류 발생
    //immutableReference = mutableReference
    
    // 참조 타입이라도 불변 인스턴스는 
    // 인스턴스 생성 후에 수정할 수 없습니다
    // 컴파일 오류 발생
    //immutableReference.immutableProperty = 200
    
    
    // 타입 프로퍼티 및 메서드
    Sample.typeProperty = 300
    Sample.typeMethod() // type method
    
    // 인스턴스에서는 타입 프로퍼티나 타입 메서드를
    // 사용할 수 없습니다
    // 컴파일 오류 발생
    //mutableReference.typeProperty = 400
    //mutableReference.typeMethod()
    

    관련문서

    실습 내용
    • SmartPhone 이라는 이름의 클래스를 정의하고, 여러 프로퍼티와 메서드를 구현해 봅시다.
    • SmartPhone의 인스턴스를 생성하고 프로퍼티 값을 변경해보고 메서드를 호출해봅시다.
    질문하기