객체 지향의 4대 특성

객체 지향은 현실 세계를 인지하는 방식으로 프로그램을 만들기 때문에 직관적이다. 인간의 인지 및 사고 방식까지 프로그래밍에 접목하는 인간 지향을 실천하고 있다.

 

캡 : 캡슐화(Encapsulation). 정보 은닉.

상 : 상속(Inheritance). 재사용.

추 : 추상화(Abstraction). 모델링.

다 : 다형성(Polymorphism). 사용 편의.

 

 

 

클래스와 객체의 차이

클래스와 객체의 차이는 분류(class)와 사물(Object)의 관계라고도 할 수 있다.

사물(객체) : 분류(클래스) = 개념 : 실체 라고도 표현할 수 있다.

 

 

 

추상화

객체지향의 추상화는 모델링이다. 비슷한 개념으로, 객체지향에서 추상화의 결과는 클래스다.

개념을 넓게 본다면 상속을 통한 추상화, 인터페이스를 통한 추상화, 다형성을 통한 추상화. 이 3가지 내용도 포함된다.

 

 

 

상속

객체지향에서의 상속은 상위 클래스의 특성을 하위 클래스에서 상속하고, 거기에 더해 필요한 특성을 추가(확장)해 사용할 수 있다는 의미이다. 상위 클래스 쪽으로 갈수록 추상화, 일반화 되었다고 말하며 하위 클래스 쪽으로 갈수록 구체화, 특수화 되었다고 말한다.

상속한다는 것이 상위 클래스의 특성을 상속한다는 것이지, 부모-자식 관계는 아니다.

상위 클래스의 특성을 재사용하는 것, 상위 클래스의 특성을 확장하는 것, is a kind of 관계(분류 관계)를 만족하는 것이다.

 

c++에서는 다중 상속이 없으나, 자바에서는 인터페이스를 도입해 다중 상속의 득만 취했다.인터페이스는 be able to (할 수 있는)의 표현 형태이다. Serializable(직렬화할 수 있는), Runnable(실행할 수 있는) 등의 인터페이스가 있다.

 

조금 더 깊이 생각해보면, 상위 클래스는 물려줄 특성이 풍부할수록 좋고, 인터페이스는 구현을 강제할 메소드의 개수가 적을수록 좋다. 상위 클래스가 풍성할수록 좋은 이유는 리스코프 치환 원칙에 따른 이유이며 인터페이스 메소드가 적을수록 좋은 이유는 인터페이스 분할 원칙에 따른 이유이다.

 

 

 

다형성

자바에서의 다형성 기본은 오버로딩과 오버라이딩이다.

오버로딩 : 같은 메소드 이름, 같은 인자 목록으로 상위 클래스의 메소드를 재정의

오버라이딩 : 같은 메소드 이름, 같은 인자 목록으로 다수 메소드를 중복 정의

오버라이딩, 오버로딩을 통해 이 다형성이 개발자가 프로그램을 작성할 때 사용 편의성을 준다.

 

 

 

캡슐화

정보를 은닉하기 위해 사용하며, 접근 제어자인 private, default, protected, public을 생각해야 한다.

call by value : 기본 자료형 변수는 저장하고 있는 값을 그 값 자체로 판단

call by reference : 참조 변수는 저장하고 있는 값을 주소로 판단

'BackEnd > Java' 카테고리의 다른 글

객체지향 디자인 패턴1 (퍼사드, 싱글톤)  (0) 2020.11.03
Java :: NULL vs isEmpty() 차이  (0) 2018.01.16
LinkedHashMap  (0) 2017.06.29
RSA 암호화 구현  (0) 2017.03.14
Java :: Spring 파일 업로드 (multipart-form/data)  (2) 2017.03.14

+ Recent posts