Search
Duplicate
😀

04. Java 객체지향 원리

태그

객체(Object), 클래스(Class), 인스턴스(Instance)

상속과 다형성

상속

클래스들 사이에 공통된 속성이나 기능들이 있을 경우, 상속을 통해 재사용성을 높일 수 있다.
자바는 상속을 통해 객체들 사이의 계층 구조를 이룰 수 있다.
C++가 다중 상속일 지원하는데 반해 자바는 단일 상속만을 지원한다.

다형성(Polymorphism)

하나의 인터페이스를 이용해 서로 다른 구현을 제공한다.
다형성은 메서드 오버로딩(Overloading)과 메서드 오버라이딩(Overriding)을 통해 지원된다.
메서드 오버로딩(Overloading)
한 클래스 안에 같은 이름의 메서드를 여러 개 정의하면서, 그 인자의 개수나 유형을 다르게 함
메서드 오버라이딩(Overriding)
상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의하는 것
재정의된 메서드가 선언된 형태는 상위 클래스에서 선언된 것과 같음

추상화, 캡슐화, 정보은닉, 메시지

추상화

다양한 객체들의 공통된 특성을 모아 일반화해 놓는 것
클래스를 정의하는데 중요한 역할을 한다.

캡슐화(Encapsulation)

변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미
변수와 메서드를 하나로 묶어 독립적으로 동작하지 않도록 함
객체가 제공하는 메서드를 통해 객체를 이용하고, 데이터가 실제로 어떻게 처리되는지 알 필요X

정보 은닉

캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있다.

메시지

객체 간에 서로 통신하는 방법
객체 간에 메시지를 주고받기 때문에 여러 객체는 동일한 프로세스를 가질 필요가 없음
서로 메싲지를 주고받는 데 객체가 존재하는 위치는 제약이 되지 않는다.