본문 바로가기

JAVA/스터디모임

[JAVA]객체 지향 프로그래밍(OOP)

1. 특징

1. 클래스와 객체

자바에서 모든 것은 객체로 표현

  • 객체 : 클래스에 의해 정의된 공간(단위)
              데이터와 그 데이터를 조작하는 메서드의 결합체
  • 클래스 : 객체 생성을 위해 미리 선언된 자료형(객체를 생성하기 위한 설계도면)
                  객체 속성 정의

 

2. 캡슐화(Encapsulation)

  • 데이터와 메서드를 하나로 묶는 것
  • 자바 => 클래스를 사용하여 데이터를 숨기고, 특정 메서드를 통해서만 데이터 접근 허용
  • 코드의 유지보수성 및 재사용성(확장성) 향상, 데이터 무결성 보호

 

3. 상속(Inheritance)

  • 이미 존재하는 클래스 기반에 기반하여 새로운 클래스를 만드는 메커니즘
  • 하위 클래스는 상위 클래스의 특성과 메서드를 상속받아 사용 가능
  • 코드의 재사용성(확장성) 향상, 중복 방지, 유지보수 용이
  • 계층 구조 => 코드의 구조화와 추상화 도모

 

4. 다형성(Polymorphism)

  • 동일한 메서드 또는 연산자가 여러 형태로 동작할 수 있는 능력
  • 자바 => 상속과 인터페이스를 통해 구현
  • 코드의 유연성, 가독성, 유지보수성 향상

 

5. 추상화(Abstraction)

  • 객체의 공통된 특성 추출 후 일반화시키는 과정
  • 자바 => 클래스와 인터페이스를 사용하여 추상화를 구현
  • 프로그램의 복잡성 낮아짐 -> 개발자가 문제를 더 쉽게 이해 및 해결하게 함

 

6. 인터페이스(Interface)

  • 클래스가 구현해야 하는 메서드의 명세 정의
  • 클래스 => 인터페이스 구현 => 해당 인터페이스에 선언된 메서드 구현
  • 다중 상속 가능
  • 코드의 유연성 확장성 향상

 

 


2. 클래스와 객체 그리고 인스턴스의 개념

클래스는 객체를 만들기 위한 설계도이고, 객체는 클래스의 실체화된 인스턴스이다. 객체는 클래스의 인스턴스이며, 클래스를 기반으로 생성된다. 객체는 클래스에 정의된 속성과 메서드를 가지고 있으며, 실제로 프로그램에서 사용된다.

 

1. 클래스(Class)

  • 객체를 만들기 위한 설계도 또는 틀. 객체 생성을 위해 미리 선언된 자료형
  • 객체의 속성(attribute)과 행위(behavior)를 정의하는데 사용
     - 객체가 가져야 할 데이터와 그 데이터를 다루는 메서드들을 포함
  • ex) 자동차 클래스의 경우 / 속성 : 색상, 모델, 속도 등 / 메서드 : 가속, 감속, 정지 등

 

2. 객체(Object)

  • 클래스의 인스턴스. 즉, 클래스에 의해 정의된 공간(단위)
  • 데이터(속성)와 메서드(행위)로 구성
    - 클래스에서 정의한 속성과 메서드를 실제로 사용
  • ex) "BMW 자동차" 클래스로부터 생성된 특정 BMW 자동차 객체는 색상, 모델 등의 속성을 가지고, 가속, 감속, 정지 등의 행위를 수행

 

3. 인스턴스(Instance)

  • 클래스를 통해 생성된 객체 (클래스를 사용하여 만든 객체)
    클래스를 기반으로 만들어진 객체가 실제 메모리에 할당되어 사용될 때
  • ex) "BMW 자동차" 클래스로부터 생성된 특정 BMW 자동차 객체는 그 클래스의 인스턴스

 

객체(Object) vs 인스턴스(Instance)

객체와 인스턴스는 일반적으로 같은 의미로 사용 but 차이점 有

💡 객체(Object)
    ✔ 속성과 행동을 가진 소프트웨어의 모든 것 (꼭 클래스의 인스턴스일 필요는 X) 
    ✔ 클래스의 타입으로 선언되었을 때
    ✔ ex) "자동차"가 클래스일 때, "내가 가진 자동차"는 클래스의 인스턴스(객체)일 수 있음 

💡 인스턴스(Instance)
    ✔ 특정 클래스의 객체를 구체화한 것  
    ✔ 클래스로부터 생성된 객체가 실제로 메모리에 할당되어 사용될 때 (클래스의 인스턴스 = 그 클래스의 객체) 
    ✔ ex) "내가 가진 자동차"가 "BMW 클래스"의 인스턴스일 때, "내가 가진 자동차"는 "BMW 클래스"의 객체

 

📌 객체는 일반적인 용어로서 속성과 행동을 가진 모든 것을 가리키는 반면, 인스턴스는 특정 클래스의 객체를 의미

'JAVA > 스터디모임' 카테고리의 다른 글

[JAVA]자바 기초 개념 이해  (2) 2024.02.13