iOS/Swift이론

swift)iOS 프로그래밍 : 클래스 상속(override)과 오버로딩

Sweetft 2021. 10. 8. 01:03

superclass - 부모 클래스

subclass - 자식클래스

* 단일 상속 : 자식클래스는 하나의 부모 클래스만 상속받을 수 있다.

* 콜론 다음 뭔가 여러 개 있다면 나머지는 채택(adopt)된 프로토콜이다.

 

class 자식:부모 { }

class 클래스명:부모명, 프로토콜명1, 프로토콜명2, .... { }

import Foundation
class Dog{
    var age : Int
    var height : Double
    func display(){
        print("나이=\(age), 키=\(height)")
    }
    init(age: Int, height: Double){
        self.age = age
        self.height = height
    }
} 

class Puppy : Dog {
    var name : String
    func display1() {
        print("이름=\(name), 나이=\(age), 키=\(height)")
    }
    init(age: Int, height: Double, name: String){
        self.name = name
        super.init(age:age, height:height)
    }
}
var jindo : Puppy = Puppy(age:6, height:60, name:"멍멍이")
jindo.display1() //이름=멍멍이, 나이=6, 키=60.0
jindo.display() //나이=6, 키=60.0

 

 

override 코드

import Foundation
class Dog{
    var age : Int
    var height : Double
    func display(){
        print("나이=\(age), 키=\(height)")
    }
    init(age: Int, height: Double){
        self.age = age
        self.height = height
    }
} 

class Puppy : Dog {
    var name : String = "강아지"
    override func display() {
        print("이름=\(name), 나이=\(age), 키=\(height)")
    }
    init(age: Int, height: Double, name: String){
        super.init(age:age, height:height)
        self.name = name
    }
}
var jindo : Puppy = Puppy(age:6, height:60, name:"멍멍이")//이름=멍멍이, 나이=6, 키=60.0
jindo.display()

부모 클래스의 메서드가 자식 클래스에서 override 된 경우 자식이 우선이다!!

 

overloading은 같은 클래스 내 동일한 이름의 메서드를 매개변수의 개수와 자료형이 다르면 여러 개 정의할 수 있는 것

overriding은 상속관계에서 자식 쪽 클래스에서 override 붙이면 부모 쪽 메서드와 똑같은 메서드를 만들 수 있음. 이 경우 자식 메서드가 우선됨

 

참고 : iOS프로그래밍기초(21년-2학기) 한성현 교수님 강의 및 강의 자료 변형, 요약