choco5958
지마의 개발일기
choco5958
전체 방문자
오늘
어제
  • 전체보기 (46)
    • 개발 (34)
      • Java (0)
      • JavaScript (7)
      • Php (4)
      • Ios(Swift) (23)
    • 프론트엔드 (7)
      • Html (1)
      • Css (5)
    • 백엔드 (0)
      • Mysql (0)
      • Oracle (0)
      • MongoDB (0)
    • 서버 (2)
      • Linux (2)
    • 일상 (3)
      • 반려동물 (1)
      • 베이킹 (2)
      • 맛집 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • ios#swifth#스위프트#열거형#아이폰#애플
  • ios#swift#스위프트#아이폰#애플#상속
  • ios#swift#스위프트#애플#아이폰#assert#guard
  • ios#swift#스위프트#프로퍼티#애플#아이폰
  • ios#swift#스위프트#클로저#애플#아이폰
  • ios#swift#스위프트#애플#아이폰#try-catch#오류처리
  • ios#swift#스위프트#아이폰#애플#옵셔널체이닝
  • ios#swift#스위프트#아이폰#애플#프로토콜
  • swift#ios#스위프트#애플#아이폰#init#초기화구문
  • ios#swift스위프트#애플#아이폰#클래스#구조체
  • ios#swift#스위프트#애플#아이폰
  • ios#swift#스위프트#애플#아이폰#고차함수
  • ios#swift#스위프트#아이폰#애플#타입캐스팅
  • ios#swift#스위프트#조건문#아이폰#애플
  • ios#swift#스위프트#구조체#문법#애플#아이폰
  • php#linux#soap#리눅스
  • php#500error
  • 자바스크립트#javascript#js#개발#웹개발
  • ios#swift#스위프트#아이폰#클래스#애플
  • ios#swift#스위프트#아이폰#애플#함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
choco5958

지마의 개발일기

개발/Ios(Swift)

IOS 스위프트(Swift) 문법 - 상속

2021. 8. 19. 22:49

상속이란?

부모가 자식에게 재산을 물려주는 행위입니다.

 

class Vehicle {
    var currentSpeed = 0.0
    var description: String {
        return "traveling at \(currentSpeed) miles per hour" //"traveling at 30.0 miles per hour in gear 2"
    }
    func makeNoise() {
        print("speaker on")  //"speaker on"
    }
}

/*
 class 클래스 이름: 부모클래스 이름 {
   //하위 클래스 정의
 }
 */

class Bicycle: Vehicle {
    var hasBasket = false
}

var bicycle = Bicycle()  //Bicycle
bicycle.currentSpeed  //0
bicycle.currentSpeed = 15.0  //Bicycle
bicycle.currentSpeed  //15

//오버라이딩 - 서브클래스는 슈퍼클래스에서 정의된 메서드,프로퍼티,서브스크립를 그대로 사용하지않고 자신만의 기능으로 변경하여 사용할 수 있습니다.
//오버라이딩을 하기위해는 오버라이드 키워드 사용, 만약 같은 이름의 정의가 슈퍼클래스에 없으면 오버라이드 키워드 사용하면 컴파일러 오류
//슈퍼클래스에 동일한 이름의 정의가 있어도 오버라이드 키워드를 사용하지않으면 오류

class Train: Vehicle {
    override func makeNoise() {
        super.makeNoise()  //슈퍼클래스의 특성을 사용
        print("choo choo")  //"choo choo\n"
    }
}

let train = Train()  //Train
train.makeNoise()  //Train

//프로퍼티를 오버라이딩하는 방법
class Car: Vehicle {
    var gear = 1
    override var description: String {
        return super.description + " in gear \(gear)"  //"traveling at 35.0 miles per hour in gear 4\n"
    }
}

let car = Car()  //Car
car.currentSpeed = 30.0  //Car
car.gear = 2  //Car
print(car.description)  //"traveling at 30.0 miles per hour in gear 2\n"

//상속된 프로퍼티에 오버라이드를 사용해서 프로퍼티 옵저버도 추가 가능
class AutomaticCar: Car {
    override var currentSpeed: Double {
        didSet {
            gear = Int(currentSpeed / 10) + 1  //AutomaticCar
        }
    }
}

let automatic = AutomaticCar()  //AutomaticCar
automatic.currentSpeed = 35.0  //AutomaticCar
print("AutomaticCar: \(automatic.description)")  //"AutomaticCar: traveling at 35.0 miles per hour in gear 4\n"


//메서드 프로퍼티, 타입 프로퍼티가 오버라이드 되는걸 방지하려면 키워드 앞에 final을 작성(오버라이드 사용불가)
//클래스에 정의할때도 사용 가능, 클래스 키워드 앞에 파이널을 작성하면 해당 클래스를 슈퍼클래스로 하는 서브클래스 생성불가

'개발 > Ios(Swift)' 카테고리의 다른 글

IOS 스위프트(Swift) 문법 - assert와 guard  (0) 2021.08.23
IOS 스위프트(Swift) 문법 - 타입캐스팅  (0) 2021.08.19
IOS 스위프트(Swift) 문법 - 클래스와 구조체의 차이  (0) 2021.08.19
IOS 스위프트(Swift) 문법 - 프로퍼티  (0) 2021.08.17
IOS 스위프트(Swift) 문법 - 초기화 구문 init  (0) 2021.08.17
    '개발/Ios(Swift)' 카테고리의 다른 글
    • IOS 스위프트(Swift) 문법 - assert와 guard
    • IOS 스위프트(Swift) 문법 - 타입캐스팅
    • IOS 스위프트(Swift) 문법 - 클래스와 구조체의 차이
    • IOS 스위프트(Swift) 문법 - 프로퍼티
    choco5958
    choco5958
    안녕하세요. 개발 및 일상 팁 들을 포스팅하는 블로그입니다.

    티스토리툴바