다형성(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 |