Swift

Swift) 상속

나태한개발 2024. 6. 4. 22:24

자바 학원을 다닐때도 무진장 어려웠던

상속

오늘 기초를 조금 다져야 할거 같다.

 

상속이란?

"스위프트(Swift)에서 상속(inheritance)은 클래스(class)가 다른 클래스의 특성과 기능을 물려받는 기능을 의미합니다. 상속을 통해 코드의 재사용성을 높이고, 기존 클래스를 확장하여 새로운 기능을 추가할 수 있습니다." 라고 한다.

 

기본 클래스

아무것도 상속을 받지 않는 클래스를 말한다.

class Human {
    var name: String
    var age: Int
    
    func printName() {
        print("NAME: \(name)")
    }
}

class Animal: Codable {
	var name: String
    var age: Int
}

Human 클래스는 아무런 클래스도 상속받지 않는다.

이것이 기본 클래스 이다.

Animal 클래스도 기본 클래스이다.

왜냐

Codable은 프로토콜이다.

프로토콜을 채택한것은 상속받은게 아니다.

 

서브 클래싱(클래스 아님 클래싱임)

나는 이제 Human이란 클래스를 상속받아 Student라는 클래스를 만드려고 한다.

class Student: Human {
    //var name: String
    //var age: Int
    var major: String
}

Student.name = "김승원" //접근가능
Student.age = 27 //접근가능
Student.major = "골프" //접근가능
Student.printName() //NAME: 김승원

 

 

Student 클래스는 Human 클래스에 있는 프로퍼티와 메서드를 가지면서

새롭게 정의된 Student 클래스에 프로퍼티와 메서드도 가진다.

Student 클래스가 Human 클래스를 상속 받는거다.

이것을 서브클래싱이라고 한다.

 

final 키워드

final class Human {
    var name: String
    var age: Int
}

class Student: Human { //오류
    //var name: String
    //var age: Int
    var major: String
}

final 키워드를 붙이면 상속을 받을수 없다.