저번글에서 객체를 공부하기전 알아두어야할 객체지향 프로그래밍 언어가 무엇인가에 대해 정리 해보았는데요.
이번글에서는 객체지향의 특징 삼총사 상속과 캡슐화, 다형성에서 알아보려고 합니다.
2015/10/28 - 자바(Java)〃객체지향 vs 절차지향 비교+장점과 단점
■ 상속
객체 지향의 특징중 첫번째 상속은 객체를 만들어 놓고 언제든지 다시 쓸 수 있다는 장점을 가지고 있습니다.
이 상속의 특징때문에 이미 만들어 놓은 상위 객체를 재사용해서 하위 객체를 쉽고 빠르게 만들수 있습니다. 그러므로 잘 만들어 놓은 객체만 있다면 고생할 필요가 없고 수정을 할때도 상위객체를 수정해주면 상속받은 모든 하위 객체가 수정이 되므로 유지보수가 쉽습니다.
정확하게는 상위객체와 하위객체라고 용어를 부르지만 저는 학원에서 이해할때 부모객체와 자식객체로 쉽게 정리기 때문에 위 사진과 같이 표현해보았습니다.
상속이란 자식이 부모에게 물려받는다는 뜻으로 이해하시고, 예제를 보시면 학생은 1학년과 2학년, 3학년을 가지고 있습니다. 하지만 학교는 학생외에도 선생님이 있죠. 학교라는 객체는 이미 만들어 놓은 학생을 그냥 불러오기만 하면 되고 선생님만 추가하면 된다는 뜻입니다.
■ 캡슐화
객체 지향의 두번째 특징 캡슐화는 안전과 보안에 대한 내용입니다. 필드와 메소드로 구성된 객체를 기껏 잘 만들어 놓고 사용하다가 실수로 중요한 부분을 건드렸다면 정보가 손상 될수가 있습니다. 프로그램 실행이 안될수도 있고요.
위 사진을 보시면 객체는 보여지는 데이터와 메소드가 있으나 그 안에는 접근지정자를 통해 숨겨놓은 데이터와 메소드가 따로 있습니다.
캡슐화의 사용은 대부분 개발자들이 개발할때 이 객체가 무엇인가 하는것은 보여주지만 어떻게 동작하는지는 숨겨놓아 공개하는 정보와 숨겨야 하는 정보를 구분해서 코딩을 합니다.
캡슐화 관련글 → 자바(Java)〃접근 제한자 private/ protected/ public / default
■ 다형성
마지막으로 객체지향의 세번째 특징 다형성은 오버라이딩(재정의)과 상속을 이용하여 실행결과가 다양한 객체를 처리할 수 있는 특징을 가지고 있는데요.
일반적으로 알고 있는 A test = new A(); 코드를 위와 같이 A가 아닌 B나 C로도 객체를 받을 수 있도록 하는것이 다형성입니다.
또한 자바의 모든 클래스는 보이지는 않지만 Object(객체)라는 최상위 부모 클래스를 상속받고 있는데요. 자바의 특성상 다중상속이 안되므로 학교는 학생을 상속받고, 학생은 Object를 상속받기 때문에 모든 클래스는 객체가 됩니다.
그래서 A test = new A();도 되고 A test = new B();도 가능하다는 이론인데, 부족한 글실력과 그림실력으로 표현하기에는 한계가 있는것 같네요.
다형성 관련글[1] → 자바(Java)〃오버로딩과 오버라이딩의 차이
다형성 관련글[2] - 자바(Java)〃생성자 오버로딩과 메소드 오버로딩
정리하자면 객체는 어디에 대입할 수 있게 부품화를 시킬수 있습니다. 즉 부모객체에는 모든 자식 객체가 대입할 수 있다는 말이고, 자식객체에 해당 메소드가 없다면 부모 객체의 메소드가 실행됩니다.
'프로그래밍 > Java' 카테고리의 다른 글
자바(Java)〃오버로딩과 오버라이딩의 차이 (4) | 2015.11.04 |
---|---|
자바(Java)〃생성자 오버로딩과 메소드 오버로딩 (1) | 2015.11.04 |
자바(Java)〃생성자의 조건 / 필드 초기화 (0) | 2015.11.03 |
자바(Java)〃필드와 변수의 선언위치와 초기값(전역변수,지역변수) (5) | 2015.11.02 |
자바(Java)〃객체지향 vs 절차지향 비교+장점과 단점 (0) | 2015.10.28 |
자바(Java) Heap영역과 Stack영역 정리 (9) | 2015.10.19 |
자바(Java) 제어문 정리 [2] 반복문 for / while / break / continue (1) | 2015.10.13 |
자바(Java) 제어문 정리 [1] 조건문 if / switch (0) | 2015.10.12 |