하이~~!!
오랜만에 코틀린 글을 쓴다 !!
오늘 배울 개념은 바로바로 !! 상속(Inherit) 이라는 개념이다. ㅎㅎ
상속(Inherit)
프로그래밍이 아니더라도 상속이라는 말은 많이 들어봤을 것이다.
코틀린에서 상속은 클래스를 만들 때 부모클래스(Super Class) 의 요소를 물려받는 것을 말한다.
여기서 상속하는 클래스를 부모클래스( Super Class) 라고 하고,
상속받는 클래스를 자식클래스(Sub Class)라고 한다.
부모클래스를 상속받은 자식클래스는 부모클래스의 변수나 메서드를 자기 것 처럼 사용할 수 있다.
상속의 예제코드를 한번 짜봤다. 아주 간단한 코드이다. 아래를 보자.
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
|
fun main(args : Array<String>) {
var tempClass = SubClass();
println("temp.subMmemberVar : ${tempClass.subMemberVar}");
tempClass.subClassMethod();
println("temp.superMmemberVar : ${tempClass.superMemberVar}");
tempClass.superClassMethod();
}
//상속하는 클래스는 open 키워드를 써줘야한다.
open class SuperClass {
var superMemberVar = 5;
fun superClassMethod() {
println("SuperClass method")
}
}
class SubClass : SuperClass {
var subMemberVar = 10;
//부모클래스를 호출하는 생성자를 꼭 만들어줘야함
constructor(): super()
fun subClassMethod() {
println("SubClass method")
}
}
|
상속을 사용할 때 중요한게 두가지 있다.
첫째는 상속하는 클래스는 open 키워드를 사용해줘야한다는 것이다. open 키워드가 없는 클래스는 코틀린에서는 final 클래스라고 인식한다. 자바에서 공부한 것처럼 final 클래스는 상속 받을 수 없다 !
두번째는 상속받는 클래스에서 부모클래스를 호출하는 생성자를 꼭 만들어 줘야한다는 것이다. 부모클래스를 호출하는 방법은 super() 메서드를 사용하면 된다.
이 두가지는 꼭 꼭 기억해주자 .
자 !! 위의 코드를 실행시켜보면 !!
이와 같은 결과를 얻을 수 있다! 백문이 불여일타 알지?? 꼭 한번 쳐보자.
상속을 살짝 응용해서 공부해보자. 아래의 코드를 보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
fun main(args : Array<String>) {
var tempClass1 = SubClass2();
println("tempClass1.memVar : ${tempClass1.memVar1}");
var tempClass2 = SubClass2(20);
println("tempClass2.memVar : ${tempClass2.memVar1}");
}
open class SuperClass2 constructor(memVar1 : Int) {
var memVar1 = memVar1;
}
class SubClass2 : SuperClass2 {
constructor(): super(10)
constructor(memVar1: Int): super(memVar1)
}
|
코드를 보면 상속받는 자식클래스에서 생성자가 두개인걸 볼 수 있다.
하나는 파라미터가 없는 생성자를 만들었고, 하나는 파라미터가 있는 생성자를 만들었다.
파라미터가 없는 생성자를 이용해서 객체를 만들면 super 메서드에 채워 넣은 10이 memVar1 에 할당 될 것이고,
파라미터가 있는 생성자를 이용해서 객체를 만들면 넣어준 파라미터의 값이 memVar1 에 할당 될 것이다.
즉 tempClass1 의 memVar1 은 10 이, tempClass2 의 memVar1 은 20이 들어가 있을 것이다. 실행을 해보면 아래와 같다.
자...! 이정도면 상속이 이해됐을까 모르겠다.. ㅎㅎㅎ 그래도 차분하게 공부해보면 쉬울 거다.
그럼 오늘도 즐거운 코딩하도록하자 !! 안녕~~!
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 뽀개기 - 오버라이딩 (Overriding) (1) | 2019.12.01 |
---|---|
[Kotlin] 코틀린 뽀개기 - 객체지향의 핵심 '캡슐화' (2) | 2019.12.01 |
[Kotlin] 코틀린 뽀개기 - 객체지향 언어인 코틀린! (3) | 2019.11.27 |
[Kotlin] Kotlin 기본 강의 (6) - 반복문 (0) | 2019.11.03 |
[Kotlin] Kotlin 기본 강의 (5) - 분기문 (0) | 2019.11.03 |
댓글