객체지향의 4가지 특징
상속성(Inheritance) / 캡슐화(Encapsulation) / 다형성(polymorphism)
/ 추상화(Abstraction)
*추상화를 위하여 두 가지 특징이 존재
장점, 재사용성 / 확장성 / 이식성 / 유지보수의 편리성
메소드 중복 정의(overloading)
오버해서 로딩한다, 비슷한 업무지만 다른 양식을 주면서 일을 더 시킴
메소드 재정의(overriding)
부모 위에 태운다, 부모를 새로 정의
부모로부터 자식이 태어났지만 자식의 모든 것을 부모가 컨트롤 할 수 없다
추상화를 사용하는 이유
'갑', '을', '병' 이 존재할 때
'갑'이 인터페이스를 정의하면
'을'은 인터페이스에 따라서 메소드를 구현
'병'은 '을'이 어떻게 구현했는지 상관 없이 '갑'이 정의해둔 인터페이스로 접근, 활용 할 수 있음
즉 인터페이스, 추상화는 서로 간의 약속이며
선언부(변경 가능성이 없는 부분)와 구현부(변경 가능성 있는 부분)가 분리되고 선언부를 통해서로 접촉하게 됨으로 구현부에 따른 서로의 의존성을 제거, 신뢰를 확보하게 됨
추상화 #1, abstract
구현부가 없는 껍데기 메소드는 추상 메소드로 선언
추상 메소드를 가진 클래스는 추상 클래스로 선언 할 수 밖에 없다
추상 클래스로는 객체를 생성할 수 없다, 따라서 상속해서 사용해야 함
추상화된 속성은 상속됨, 메소드 재정의 전제 조건은 상속
추상 클래스를 상속받은 클래스가 객체 생성이 가능하려면 추상 메소드를 반드시 재정의
*상속 관계 = is type, is a, is kind로 표현
김밥 is a 음식 -> 음식 a = new 김밥();
비빔밥 is a 음식 -> 음식 a = new 비빔밥();
= Heterogeneous Collection(부모 타입의 객체를 보관할 수 있는 다형성의 특징)
추상화 #2, interface
상속을 통한 추상 레벨을 적용할 수 없는 경우 사용
오직 추상화된 메소드 형태로만 존재 가능
abstract vs interface
abstract는 extends 키워드를 사용하여 상속하는 개념, 한 부모만 상속 가능
interface는 implements 키워드를 사용하여 추상 메소드를 그대로 상속, 재정의하는 개념
여러 부모 상속 가능(다중 상속)
'학습 log (이론) > pattern' 카테고리의 다른 글
'디자인 패턴' 패턴 종류 (0) | 2017.02.07 |
---|---|
'객체 직렬화 및 RMI' 'Prototype 패턴' #1 (0) | 2016.12.13 |