티스토리 뷰

반응형

오버로딩(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 키워드 알아보기

반응형
댓글
최근에 올라온 글
최근에 달린 댓글