본문 바로가기
프로그래밍/Java

다형성

by 3.14pie 2023. 2. 2.

다형성(Polymorphism) - 어떤 개체가 다양한 형태로 변할 수 있는 기능이다. 많은 사람들이 OOP의 핵심이라고 생각하는 특징이다. 같은 지시를 내렸는데 다른 종류의 개체가 동작을 다르게 하는 것이다. 상속 관계가 필요하다. 다른 종류의 개체를 편하게 저장하거나 처리할 수 있다. 다형성은 상속에 기반하고 상속은 추상화에 기반한다.

늦은 바인딩 - 어떤 함수 구현이 실행될지는 실행 중에 결정된다. 동적 바인딩이라고도 한다.

이른 바인딩 - 일반적인 함수 호출이다. 컴파일 중에 결정된다. 정적 바인딩이라고도 한다.

오버라이딩 - 부모 개체에서 함수 시그니처 선언 후에 자식 개체에서 그 함수를 다르게 구현한다. 부모 함수의 동작을 유지하면서 오버라이딩도 가능하다. super를 붙여 호출하면 되는데 꼭 첫 줄에서 호출할 필요는 없다. 이런 함수를 가상 메서드라고도 한다. 부모 함수에 final을 붙이면(이른 바인딩처럼 작동) 자식 함수에서 오버라이딩 코드를 짰을 때 컴파일 오류가 난다. (클래스 앞에 final을 붙이면 상속이 불가능해진다.)

 

각 자료형의 코드가 클래스 내부에 있어 캡슐화가 된다.

유지보수성이 높아진다.

새로운 클래스를 추가하려면 클래스 코드만 추가하면 된다.

 

Object - 자바의 클래스는 모두 object에서 상속받는다. object에 있는 메서드들은 어떤 클래스에서도 오버라이딩이 가능하다. toString(), equals(), hashCode()

 

추상 클래스 - 구현이 없는 클래스이다. 인스턴스를 만들 수 없다. abstract를 이용해 만들 수 있다. 다른 클래스의 부모 클래스가 될 수 있다. 반드시 추상 메서드가 있을 필요는 없다.

'프로그래밍 > Java' 카테고리의 다른 글

예외 처리, 오류 처리  (0) 2023.05.13
디자인 패턴  (0) 2023.05.11
상속, 컴포지션  (0) 2023.01.29
상속  (0) 2023.01.17
Static, 디자인 패턴, 내포 클래스  (0) 2023.01.13