본문 바로가기

객체지향 프로그래밍의 특징

참고 : 자바의 정석

- 객체지향 특징 4가지

  1. 추상화 (Abstraction)

  2. 캡슐화(Encapsulation)

  3. 상속(Inheritance)

  4. 다형성(Polymorphism)


1. 추상화

객체에서 공통된 속성과 행위를 추출하는 것을 추상화(Abstraction)라고 한다.

추상클래스

추상클래스는 미완성 설계도에 비유할 수 있다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 새로운 클래스를 작성할 때 아무 것도 없는 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느 정도 틀을 갖춘 상태에서 시작하는 것이 나을것이다.


2. 캡슐화(Encapsulation)

캡슐화는 프로그램의 세부 구현을 외부로 드러나지 않도록 특정 모듈(클래스) 내부로 감추는 것이다.

* 접근제어자

public > protected > default > private

접근제어자를 사용하는 이유

  • 외부로부터 데이터를 보호하기 위해서

  • 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서


3. 상속

기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 보다 적은 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다.

4. 다형성

  • '다양한 형태로 나타날 수 있는 능력'을 뜻한다.

  • 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있다.

  • 같은 이름의 메소드를 여러개 정의 (오버로딩)

    오버로딩의 장점

  • 하나의 이름으로 정의함으로써 하나의 이름만 기억하면 되므로 기억하기도 쉽고 같은 기능을 한다는 것을 쉽게 예측할 수 있다.

  • 메서드의 이름을 절약할 수 있다.





- 인터페이스

  • 인터페이스는 일종의 추상클래스이다.

  • 추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 '기본 설계도'라 할 수 있다.

  • 인터페이스는 클래스와는 달리 다중상속이 가능하다.

  • 모든 멤버변수는 public static final 이어야 한다.(생략 가능)

  • 모든 메서드는 publlic abstract 이어야 한다(생략 가능

인터페이스의 장점

  • 개발시간을 단축시킬 수 있다.

    • 메서드를 호출하는 쪽에서는 메서드의 내용에 관계없이 선언부만 알면 되기 때문이다.

    • 동시에 다른 한 쪽에서는 인터페이스를 구현하는 클래스를 작성하도록 하여, 인터페이스를 구현하는 클래스가 작성될 때까지 기다리지 않고도 동시에 개발을 진핼할 수 있다.

  • 표준화가 가능하다.

    • 프로젝트에 사용되는 기본틀을 인터페이스로 작성한 다음, 개발자들에게 인터페이스를 구현하여 프로그램을 작성하도록 함으로써 보다 일관되고 정형화된 프로그램의 개발이 가능하다.

  • 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.

  • 독립적인 프로그래밍이 가능하다.(특정 프로그램에 종속적이지 않다.)

    • 클래스와 클래스간의 직접적인 관계를 인터페이스를 이용해서 간적적인 관계로 변경하면, 한 클래스의 변경이 다른 클래스에 영향을 미치지 않는 독릭적인 프로그래밍이 가능하다.


'Java' 카테고리의 다른 글

자바 입출력 IO  (0) 2018.11.30
Comparator와 Comparable의 차이 + 람다표현식  (0) 2018.11.29
객체, 클래스, 인스턴스의 차이  (0) 2018.11.29
자바의 특징  (0) 2018.11.29
자바 : 쓰레드(Thread)란?  (0) 2018.11.29