티스토리 뷰
반응형
오버로딩(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 키워드 알아보기
반응형
'Kotlin' 카테고리의 다른 글
코틀린 기초 문법) 14. 코틀린 lateinit, 속성 참조(더블 콜론 ::) (0) | 2019.05.25 |
---|---|
코틀린 기초 문법) 13. 코틀린 const (컴파일 타임 상수) (0) | 2019.05.25 |
코틀린 기초 문법) 11. 코틀린 상속, open 키워드 알아보기 (0) | 2019.05.23 |
코틀린 기초 문법) 10. 코틀린 클래스와 생성자, init 키워드 알아보기 (0) | 2019.05.22 |
코틀린 기초 문법) 9. 코틀린 DTO, POJO, POCO 데이터 클래스 만들기 (0) | 2019.05.21 |
댓글
최근에 올라온 글
최근에 달린 댓글