Kotlin
코틀린 기초 문법) 12. 코틀린 오버라이딩, 오버로딩 알아보기
가독성 0%
2019. 5. 24. 07:47
반응형
오버로딩(Overloading)?
메서드(함수) 이름을 고정으로 하고 매개변수 만 다르게 함으로써 메서드를 여러개 만드는 것
자바에서 오버로딩
public class OverloadingClass {
void ex(){}
void ex(int x){}
void ex(int x, int y){}
void ex(int x, int y, int z){}
void ex(String str){}
void ex(String str, int x){}
/*
*.
*..
*...
*....
*.....
*/
}
코틀린에서 오버로딩
class OverloadingClass() {
fun ex() {}
fun ex(x: Int, y: Int) {}
fun ex(x: Int, y: Int, z: Int) {}
fun ex(str: String) {}
fun ex(str: String, x: Int) {}
/* .
..
...
....
.....*/
}
오버라이딩(Overriding)?
상위 클래스가 가지고 있는 메서드(함수)를 하위 클래스에서 재정의 하는 것
자바에서 오버라이딩
어노테이션(@, Annotation)?
여러 목적으로 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종
class OverloadingClass {
void ex() {
System.out.println("OverloadingClass");
}
}
class ChildClass extends OverloadingClass {
// @Override 없어도 오버라이딩 가능
// 어노테이션 @Override를 명시적으로 추가 한 이유는
// 상위 클래스에 ex라는 메소드가 있는지 체크하기 위해서입니다.
// 어노테이션 명시 상태에서 메서드 이름이 틀릴 경우 or 매개변수가 안 맞을 경우 에러발생
// 어노테이션 명시가 되지 않을 경우 메서드 이름이 다르거나 매개변수가 다르면 새로운 메서드로 인식 함
// 이런 오류를 방지하기 위해 어노테이션 @Override를 사용합니다.
@Override
void ex() {
System.out.println("ChildClass");
}
}
/*
* 실행 코드 new ChildClass().ex();
*
* 실행 결과
* ChildClass
*/
코틀린에서 오버라이딩
1. 상위 클래스 함수 앞에 open 키워드를 명시하여 오버라이딩 가능하도록 설정
2. 하위 클래스에서 상위 클래스 함수를 재 정의 할때 함수 이름과 매개변수를 같게 하고 override 키워드를 명시
open class OverloadingClass() {
open fun ex() {}
}
class ChildClass() : OverloadingClass() {
override fun ex() = println("재정의 되었습니다.")
}
위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다.
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 1. 코틀린 변수 정의하기
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 2. 코틀린 함수 정의하기
2019/05/22 - [Kotlin] - 코틀린 기초 문법) 10. 코틀린 클래스와 생성자, init 키워드 알아보기
2019/05/23 - [Kotlin] - 코틀린 기초 문법) 11. 코틀린 상속, open 키워드 알아보기
반응형