Hello, Android!
다형성 본문
부모의 프로퍼티, 메서드를 상속받아 사용하는데
자식 클래스에서 같은 이름의 메서드, 프로퍼티를
처리 내용이 다르거나, 다른 매개변수를 받아야 하는 경우가 있다
이렇게 이름은 같지만 매개변수가 다르거나, 다른 처리 내용을 갖는 것을
다형성 이라고 한다
다형성에도 매개변수만 다른 경우, 처리 내용이 다른 경우 두가지가 있는데
매개변수만 다른 경우를 오버로딩(overloading)
처리 내용이 다른 경우를 오버라이딩(overriding)이라고 한다
- 오버로딩
Calc 클래스 안에는 add라는 동일한 이름의 함수가 여섯개 있다
하지만 모든 add함수는 서로 다른 매개변수를 받고있지만, 받은 매개변수를 더한값을 반환 한다는
같은 처리내용을 갖고 있다
add함수 호출시 매개변수를 Int 두개를 넘기면 첫번째 add함수가 호출되고
Double 두개를 넘겨주면 두번쨰 add 함수가 호출된다
-오버라이딩
오버라이딩은 부모클래스 에서 상속받은 메서드를 자식 클래스가 새롭게 고쳐서 사용하는 것이다
메서드의 이름, 매개변수, 반환값은 부모의 것과 동일하지만, 내용을 새롭게 정의하여
다른 기능을 하도록 정의하는 것이다
메서드의 오버라이딩을 하기 위해서는 오버라이딩을 가능하게 할 함수 앞에 open이라는 키워드를 사용하며
오버라이딩을 할때는 overwride라는 키워드를 사용하여 오버로이딩 했음을 알려준다
Calc클래스를 상속받는 자식 클래스인 SubCalc클래스에서 add함수를 오버라이딩 하여
매개변수 두개를 곱한 결과를 반환하도록 오버라이딩 하였다
Calc 클래스의 sub메서드 앞에 final 이라는 키워드가 붙어있는데 final키워드가 붙은 메서드는
자식 클래스에서 오버라이딩을 금지한다
main함수에서 SubCalc 객체를 만들고 add, sub, mul, divi 각각의 함수를 호출하였는데
이때 sub, mul, divi는 SubCalc의 부모의 메서드를 그대로 활용하지만
add의 경우 오버라이딩을 하였기 때문에 두개의 매개변수를 더한 값이 아닌
곱한 값을 반환하게 된다
'Kotlin' 카테고리의 다른 글
이너클래스 inner class (0) | 2020.03.16 |
---|---|
super this (0) | 2020.03.15 |
상속 (0) | 2020.03.15 |
생성자 (0) | 2020.03.11 |
클래스 (0) | 2020.03.10 |