Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구글맵스
- nodejs
- array
- React
- TypeScript
- Linux
- stylesheet
- 스프링부트
- button
- Kotlin
- SpringBoot
- 랜덤넘버
- 안드로이드
- JavaScript
- 랜덤번호
- Android
- 코틀린
- npm
- scrollview
- JS
- GoogleMaps
- fragment
- RecyclerView
- 리액트
- 자바스크립트
- Javscript
- TextView
- 오버라이딩
- Java
- Hook
Archives
- Today
- Total
타닥타닥 개발자의 일상
Kotlin에서의 this, super, 오버로드 overload, 오버라이딩 overriding 예시 알아보기 본문
코딩 기록/Kotlin
Kotlin에서의 this, super, 오버로드 overload, 오버라이딩 overriding 예시 알아보기
NomadHaven 2022. 1. 26. 22:58
메인함수
fun main(args: Array<String>) {
//this와 super, overriding, overload 사용
val base = Base("길동","홍",24)
base.firstname = "진호" //firstname 진호로 set.
println(base.fullName) // get과 같은 역할, 출력값: 진호 홍
val child = Child("춘향","성",15, "서울시") //Base 클래스의 자식 클래스인 Child의 생성자
println(child.lastname) // 출력값 : 성
println(child.fullName)
// 오버라이딩 전 출력값: 춘향 성 , 오버라이딩 후 출력값: 춘향 15 서울시
}
부모 클래스와 자식 클래스
//상속을 해주기 위해 open 붙인다. default parameter 지정.
open class Base(var firstname:String = "길동", val lastname:String = "홍", var age:Int =24){
open val fullName: String // 오버라이딩 위해 open 붙인다. (변수든 클래스든 메소드든 상속 시키려면 open붙인다.)
get() = "$firstname $lastname"
}
class Child(firstname:String, lastname:String, age:Int, var address:String) : Base(firstname, lastname, age) { //Base를 상속받는 Child클래스
override val fullName:String
get()= "$firstname $age $address" //fullName을 오버라이드. lastname 삭제하고 age,address 추가.
}
메인함수
fun main(args: Array<String>) {
val parrot = Parrot("나이팅게일",2,"blue",7) //Bird 클래스의 자식 클래스인 Parrot의 생성자
println(parrot.toString()) //출력값: Bird(name='나이팅게일', wing=2, color='blue')Parrot(vol=7)
println(parrot.allData()) // 출력값 : 나이팅게일 2 blue 7 (vol이 오버라이딩 되었다.)
}
부모클래스와 자식클래스
open class Bird(var name:String, var wing:Int, var color:String){
fun fly() = println("Fly wing: $wing")
override fun toString(): String {
return "Bird(name='$name', wing=$wing, color='$color')"
}
open fun allData() = print("$name $wing $color ") //overriding 위해 함수앞에 open 기재
}
class Lark(name:String, wing:Int, color:String):Bird(name, wing, color){
fun singHitOne() = println("짹 comeback")
}
//Bird 클래스 상속받은 Parrot
class Parrot : Bird{
var vol: Int = 0
constructor(name:String, wing:Int, color:String, vol:Int):super(name, wing, color){
this.vol = vol
}
override fun toString(): String {
return super.toString() + "Parrot(vol=$vol)"
//부모 클래스의 toString 출력값 + Parrot의 vol 출력
}
override fun allData(){ //상속된 함수에 vol이 없는 관계로 vol을 overriding
super.allData()
println("$vol") //overriding 된 값
}
}
메인함수
fun main(args: Array<String>) {
val cal = Calc() //overload 의 예시
println( cal.add(3,4))
println( cal.add(3.4,4.12))
println( cal.add(3,4,5))
println( cal.add(3.12,4.44,5.44))
}
생성자가 불러온 클래스
class Calc{
//overload 함수 명칭은 동일하되 매개변수가 다르다.
fun add(x:Int, y:Int): Int =x+y //1
fun add(x:Double, y:Double): Double =x+y //2
fun add(x:Int, y:Int, z:Int) : Int = x + y + z //3
fun add(x:Double, y:Double, z:Double) : Double = x + y + z //4
}
전체 원본코드
fun main(args: Array<String>) {
//this와 super, overriding, overload 사용
val base = Base("길동","홍",24)
base.firstname = "진호" //firstname 진호로 set.
println(base.fullName) // get과 같은 역할, 출력값: 진호 홍
val child = Child("춘향","성",15, "서울시") //Base 클래스의 자식 클래스인 Child의 생성자
println(child.lastname) // 출력값 : 성
println(child.fullName)
// 오버라이딩 전 출력값: 춘향 성 , 오버라이딩 후 출력값: 춘향 15 서울시
val parrot = Parrot("나이팅게일",2,"blue",7) //Bird 클래스의 자식 클래스인 Parrot의 생성자
println(parrot.toString()) //출력값: Bird(name='나이팅게일', wing=2, color='blue')Parrot(vol=7)
println(parrot.allData()) // 출력값 : 나이팅게일 2 blue 7 (vol이 오버라이딩 되었다.)
val cal = Calc() //overload 의 예시
println( cal.add(3,4))
println( cal.add(3.4,4.12))
println( cal.add(3,4,5))
println( cal.add(3.12,4.44,5.44))
}
class Calc{
//overload 함수 명칭은 동일하되 매개변수가 다르다.
fun add(x:Int, y:Int): Int =x+y //1
fun add(x:Double, y:Double): Double =x+y //2
fun add(x:Int, y:Int, z:Int) : Int = x + y + z //3
fun add(x:Double, y:Double, z:Double) : Double = x + y + z //4
}
open class Bird(var name:String, var wing:Int, var color:String){
fun fly() = println("Fly wing: $wing")
override fun toString(): String {
return "Bird(name='$name', wing=$wing, color='$color')"
}
open fun allData() = print("$name $wing $color ") //overriding 위해 함수앞에 open 기재
}
class Lark(name:String, wing:Int, color:String):Bird(name, wing, color){
fun singHitOne() = println("짹 comeback")
}
class Parrot : Bird{ //Bird 클래스 상속받은 Parrot
var vol: Int = 0
constructor(name:String, wing:Int, color:String, vol:Int):super(name, wing, color){
this.vol = vol
}
override fun toString(): String {
return super.toString() + "Parrot(vol=$vol)"
//부모 클래스의 toString 출력값 + Parrot의 vol 출력
}
override fun allData(){ //상속된 함수에 vol이 없는 관계로 vol을 overriding
super.allData()
println("$vol") //overriding 된 값
}
}
//상속을 해주기 위해 open 붙인다. default parameter 지정.
open class Base(var firstname:String = "길동", val lastname:String = "홍", var age:Int =24){
open val fullName: String // 오버라이딩 위해 open 붙인다. (변수든 클래스든 메소드든 상속 시키려면 open붙인다.)
get() = "$firstname $lastname"
}
class Child(firstname:String, lastname:String, age:Int, var address:String) : Base(firstname, lastname, age) { //Base를 상속받는 Child클래스
override val fullName:String
get()= "$firstname $age $address" //fullName을 오버라이드. lastname 삭제하고 age,address 추가.
}
'코딩 기록 > Kotlin' 카테고리의 다른 글
Comments