[JAVA] 객체 지향의 개념과 특성

용용학생·2024년 4월 9일

자바

목록 보기
11/32

자바는 객체지향 언어이다.

라는 말을 많이 들어봤을 것이다.
그렇다면 객체지향 언어는 무엇인지 어떤 특성이 있는지 알아봅시다.

객체지향 언어

  • 프로그램의 모든 것을 객체 단위로 만들어 이들의 상호작용으로 서술하는 방식
  • 기능이 중심이 되는 절차지향 언어와는 달리 객체지향 언어는 객체가 중심

객체

그렇다면 객체는 무엇일까?
넓은 의미에서는 실세계에 존재하거나 생각할 수 있는 것을 말한다.
프로그래밍에서의 객체는 속성기능을 가진 하나의 단위로 볼 수 있다.

장점

객체지향적으로 프로그램을 설계하면 이러한 장점을 얻을 수 있다.

  • 프로그램을 유연하고 변경이 용이하게 만들 수 있음
  • 코드의 변경을 최소화하고 유지보수하는데 유리함
  • 코드를 재사용할 수 있고, 간결하게 표현 가능
  • 인간 친화적이고 직관적인 코드 작성 용이

요소

객체지향적인 설계의 이점들을 잘 살릴 수 있는 객체지향 언어의 특징들이 있다.

  1. 캡슐화
  2. 상속
  3. 다형성
  4. 추상화

캡슐화

  • 객체를 캡슐로 감싸 외부의 접근으로부터 객체를 보호
  • 관련이 있는 변수와 함수를 하나로 묶어서 관리

자바에서는 클래스라는 틀을 객체를 생성한다.
모든 변수와 함수는 클래스 안에서 구현된다.

클래스를 통해 생성된 실체(인스턴스)를 객체라고 부른다.

상속

  • 자식 클래스가 부모 클래스의 특성과 기능을 그대로 물려받는 것
  • 상하 관계의 개체에서 코드의 불필요한 재작성을 줄여 중복성을 낮춤

동물 이라는 부모 클래스의 특성과 기능들을 강아지고양이 같은 자식 클래스가 모두 물려받을 수 있다.

다형성

  • 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 구현된 것

생물학적으로 쓰이는 다형성은 동일종의 생물이면서도 형태나 성질이 다양한 상태이다.

프로그래밍에서 쓰이는 다형성도 이와 비슷한 의미이다.
프로그램 요소가 여러 가지 타입을 가지는 것이 허용되는 성질이다.

다형성을 구현하는 대표적인 방법에는 오버로딩오버라이딩이 있다.

  • 메소드 오버로딩 : 한 클래스 내에서 같은 이름으로 다르게 구현하는 것
  • 메소드 오버라이딩 : 부모 클래스의 메소드를 자식 클래스 각각에서 동일한 이름으로 다르게 구현하는 것

추상화

  • 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
  • 추상화를 구현할 수 있는 문법 요소로는 추상 클래스인터페이스가 존재

상속이랑 무엇이 다르죠?

결과적으로 보면 공통된 속성과 기능을 추출하여 모아놓았다는 점은 동일하다.

그러나 개념적으로는 상속은 하위 클래스에서 동일한 기능을 사용하기 위해 상위 클래스의 기능을 가져다가 사용하는 것이고,
추상화는 기존 클래스들의 공통 요소를 뽑아 상위클래스를 만드는 것이 차이점이다.

profile
자바 스프링 공부하는 정리 블로그!

0개의 댓글