최대 1 분 소요

객체지향프로그래밍 입문 강의의 강의 내용을 참고하여 정리한 글입니다.


형변환에서의 메모리

업케스팅이 되었다면 메모리 구조에서 접근할 수 있는 멤버 변수와 method는 상위 클래스만 가능하다.
왜냐하면 참조변수가 참조할 수 있는 건 type에 해당하는 것만 참조할 수 있다.

메서드 오버라이딩

하위 클래스에서 필요한 메서드가 상위 클래스의 동일한 메서드와 다른 방식으로 진행될 때 사용한다.

가상 메서드(virtual method)

원래 메서드의 참조는 해당 변수의 타입에 따라 이뤄지지만 타입과 상관없이 실제 생성된 인스턴스의 메서드가 호출되는 원리.

이것이 가능한 이유는 함수는 디버깅 해보면 instruction 영역(코드 영역)으로 되어 있기 때문에 변수 혹은 argument와 무관히 항상 동일하다. 그래서 이 메서드를 불러와서 실행하게 되고, 상속하고 override가 안된 경우에는 한 메서드는 동일한 메모리 주소를 가지게 된다.

단, override를 한 경우 동일한 메서드의 상위클래스의 메모리 주소와 하위 클래스의 메모리 주소가 달라지게 되는데 외부에서 호출한 경우 메서드를 불러오는 것은(바인딩 하는 것은) 이 때 type의 method가 아니라 instance의 method가 호출되는 것이 virtual method라고 한다.

제목

다형성(polymorphism)

하나의 코드가 여러가지 자료형으로 구현되는 것으로 정보은닉, 상속과 더불어 객체지형 프로그래밍에서 중요한 특징이 된다. 서로 다른 하위 클래스들을 상위 클래스로 업케스팅 해서 오버라이딩한 함수를 실행하면 서로 다른 함수를 한줄로 구현이 가능하게 되기 때문이다.

이를 통해 유지보수, 재활용에 유연한 프로그래밍이 된다.

태그: ,

카테고리:

업데이트:

댓글남기기