티스토리 뷰
상속이 필요한 경우
- 이미 존재하는 클래스를 확장하여, 새로운 속성이나 함수를 추가한 클래스를 만들어야 할 때.
- 여러개의 클래스를 만들었는데, 클래스의 공통점을 뽑아 코드 관리를 편하게 해야할 때
속성과 함수를 물려주는 쪽을 SuperClass, 물려받는 쪽을 SubClass
Animal 클래스를 Dog와 Cat 클래스로 확장하기
class Animal (var name: String, var age: Int, var type: String) {
fun introduce() {
println("저는 ${type} ${name}이고, ${age}살 입니다.")
}
}
현재 Animal 클래스는 'open' 상태가 아니기 때문에 상속받을 수 없음
* open : 클래스가 상속받을 수 있도록 클래스 선언시 붙여줄 수 있는 키워드
Animal Class에 open 키워드를 붙여주고 이를 상속받는 클래스를 만든다.
open class Animal (var name: String, var age: Int, var type: String) {
fun introduce() {
println("저는 ${type} ${name}이고, ${age}살 입니다.")
}
}
class Dog (name: String, age: Int) : Animal (name, age, "개") {
fun bark() {
println("멍멍")
}
}
class Cat (name: String, age: Int) : Animal (name, age, "고양이") {
fun meow() {
println("야옹야옹")
}
}
상속에 대한 규칙
1. SubClass는 SuperClass에 존재하는 속성과 '같은 이름'의 속성을 가질 수 없음
2. SubClss가 생성될 때는 반드시 SuperClass의 생성자까지 호출되어야 함
fun main() {
var a = Animal("별이", 5, "개")
var a = Animal("별이", 5)
a.introduce()
b.introduce()
// 저는 개 별이이고, 5살 입니다.
// 저는 개 별이이고, 5살 입니다.
b.bark()
// 멍멍
var c = Cat("루이", 1)
c.introduce()
c.meow()
//저는 고양이 루이이고, 1살 입니다.
//야옹야옹
}
클래스의 상속은 클래스를 더 구조적으로 다룰 수 있다는 장점이 있지만, 지나친 상속구조는 코드를 더 어렵게 만들 수 있음
출처 : 디모의 Kotlin 강좌를 통해 학습한 내용을 정리했습니다.
'개발지식 > TIL (Today I learned)' 카테고리의 다른 글
안드로이드 - Activity 생명주기 (Life Cycle) (0) | 2021.04.06 |
---|---|
Kotlin 기초 문법 (5) - 클래스의 기본 구조 및 생성자 (0) | 2021.04.05 |
Kotlin 기초 문법 (4) - 반복문, 증감연산자, 흐름제어, 논리연산자 (0) | 2021.04.05 |
Kotlin 기초 문법 (3) - 조건문, 비교연산자 (0) | 2021.04.05 |
Kotlin 기초 문법 (2) - 형변환, 배열, 타입추론, 함수 (0) | 2021.04.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- blendshapes
- Reactivex
- infallible
- 프로그래머스
- cocoapods
- GraphDB
- boj
- SwiftUI
- 안드로이드
- SWEA
- mergesort
- 백준
- 카카오인턴십
- bounds
- 백준온라인저지
- disposeBag
- 알고리즘
- ARKit
- C++
- ios
- DispatchQueue
- rxswift
- Neo4j
- 코코아팟
- Lottie
- blendshape
- rxswift6
- Kotlin
- Swift
- coreml
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함