2018. 6. 15. 22:20ㆍkotlin-이론
Class 상속
class bb : aa//기본 생성자가 없다 { constructor():super() constructor(cnt:Int):this() constructor(ctx:Int, attrs:Int):super() }
메소드 오버라이딩
오버라이딩 되어질 함수에 클래스와 같이 open을 붙여주고 사용될 곳에서는 override를 붙여주면 된다.
-오버라이딩 될 함수 oepn
-오버라이딩 된 함수 override
fun main(args:Array){ var test = AA() test.whatUInfo() } open class BB{ var name:String = "" var age:Int = 0 constructor(name:String, age:Int){ this.name = name this.age = age } open fun whatUInfo(){ println(this.name+this.age) } } class AA:BB("이상훈", 22){ override fun whatUInfo() { super.whatUInfo() println("너의 이름은 "+name) println("너의 나이는 "+age) } }
상속 받은 클래스 AA는 BB를 상속받아 BB의 whatUInfo의 기능을 그대로 이어받고 원래의 함수에 기능을 더 추가해서 사용할 수 있다.
프로퍼티 오버라이딩
클래스 오버라이딩과 같이 open과 override를 통해 사용할 수 있다.
오버라이딩 규칙
package `class` fun main(args:Array){ var C = C() C.f() } open class A{ open fun f(){ println("AAAAAAAAfffffffff") } } interface B{ fun f(){ println("BBBBBBBBFFFFFFFF") } } class C():A(), B{ override fun f() { super<A>.f() super<B>.f() } }
위 코드와 같이 작성해주면 class와 interface에 이름이 같은 함수가 존재할 때 특이한 방법으로 해결할 수 있다.
추상 클래스
abstract class AbsClass{ abstract fun f() } class MyClass:AbsClass(){ override fun f() { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } }
추상 클래스는 몸체가 없는 클래스이다. 따라서 상속받는 클래스에서 이함수를 구현을 해야한다.
open이 필요없다.
'kotlin-이론' 카테고리의 다른 글
[kotlin] kotlin 강의 properties2 (0) | 2018.06.17 |
---|---|
[kotlin] kotlin 강의 properties1 (0) | 2018.06.16 |
[kotlin]Class (0) | 2018.06.15 |
[kotlin]Return and Jumps (break 문, continue 문, return 문) (0) | 2018.06.15 |
[kotlin]코틀린 controlFlow (0) | 2018.06.15 |