메서드 오버라이드(override)
: 자식 클래스에서 부모 클래스의 기능(method)을 재정의 할 때 사용하는 기능
- 어떤 경우에 오버라이드를 사용..?
- 부모 클래스의 기능을 그대로 사용하지 않고 자식 클래스에서 구현한 기능을 사용하고 싶을때
- 부모 클래스의 기능을 자식 클래스에서 확장하고 싶은 경우
부모 클래스의 기능을 자기 클래스에서 재정의 - 재정의 구문
MyParent.prototype.부모메서드 = function() {}
MyChild.prototype.부모메서드 = function() {}
위 코드 실행시, 부모 클래스의 method()가 동작하지 않고, 자식 클래스에서 작성한 method()가 동작함.
이처럼 부모의 기능을 직접 수정하지 않고 부모의 기능을 재정의 할 때 메서드 오버라이드를 사용함.
부모 클래스의 기능을 자기 클래스에서 확장 - 확장 구문
MyChild.prototype.부모메서드 = function ([param1, param2, ...]) {
부모클래스.prototype.부모메서드.call(this.[,param1, param, ...])
// 추가 확장 구문
}
오버라이드하고자 하는 부모 클래스의 기능(메서드)를 자식 클래스에서 동일한 이름으로 만들어 주면 된다.
이후 메서드 내부에는 함수객체(Function)에서 제공하는 call()메서드를 활용해 부모의 기능을 호출함.
그 후, 추가하고자 하는 구문을 작성하면 됨.
메서드 오버로딩(overloading)
: 동일한 이름을 가진 여러개의 메서드를 만든 후 매개변수 타입과 개수에 맞는 메서드가 자동으로 호출되는 기능
※ 자바스크립트는 문법적으로 오버로딩을 지원하지 않는다.
대신에 매개변수 정보를 담고 있는 arguments를 이용해 오버로딩을 흉내내서 사용함
메서드 오버로딩 구문
function 함수 또는 메서드이름() {
arguments 객체 활용
}
arguments객체에 담긴 매개변수 값을 매개변수의 개수(length)만큼 반복해서 더해주고 있다.