hoon's bLog

Java class object 클래스와 객체 객체지향프로그래밍 OOP 본문

IT/Java

Java class object 클래스와 객체 객체지향프로그래밍 OOP

개발한기발자 2021. 1. 5. 16:02
반응형

안녕하세요~

이번 포스팅은 클래스와 객체에 대해서 다뤄보도록 하겠습니다.

제가 코린이고, 뉴비의 입장을 대변했을 때, 자바에 있어서 이 부분이 어떻게 보면

개념 부분에 있어서 가장 중요하고, 비중이 큰 부분이지 않을까 싶습니다.

자주쓰고, 많이 쓰지만 정작 말로 해보라고 하면 뭔가 내 뜻대로 잘 설명이 안 되는??? 그런 부분???

(취업 준비할 때 바짝 하고, 공부를 소홀히 한 부분도 한몫한 것 같습니다ㅠㅠ)

여하튼 이 부분에 대해서 이번 기회에 제대로 정리하고,

누군가에게 쉽게 설명해 줄 수 있을 정도가 되는 것이 제 목표입니다!

그럼 포스팅 시작하겠습니다!

우선 클래스와 객체에 대해서 알아보기 전에

객체 지향 프로그래밍(Object Oriented Programming)에 대해서 알아볼 텐데요,

객체지향 프로그래밍의 작성은 클래스를 만들고, 생성된 클래스를 객체로 만들고,

이 객체를 사용하여 독립형 실행 프로그램인 응용 프로그램을 만드는 것이 포함됩니다.

그렇다면 클래스와 객체는 무엇이냐?

클래스 : 객체의 데이터 필드와 메서드가 무엇인지 정의하는 하나의 틀
객체 : 클래스의 인스턴스이고, 클래스는 많은 수의 인스턴스를 생성 가능
인스턴스 : 소프트웨어 세계에 구현된 구체적인 실체

여기서 클래스, 객체, 인스턴스를 예제를 통해 알아보겠습니다.

/* 클래스 */
public class Animal {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    // 인스턴스화
    Animal cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체 cat을 메모리에 할당)
    Animal dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체 dog를 메모리에 할당)
  }
}

간단하게 보면 클래스는 틀이고, 객체는 선언, 인스턴스는 실체화라고 보시면 됩니다.

클래스는 데이터 필드와 메서드를 정의하기 위해 변수들을 사용합니다.

또한, 새로운 객체를 생성하기 위해 수반되는 특별한 형식인 생성자라 불리는 메서드를 제공합니다.

생성자는 객체의 데이터 필드의 초기화와 같은 초기화 작업들을 수행하기 위해 설계되어있습니다.

객체들은 속성과 메서드로 구성됩니다.

속성이란 객체를 정의하는 특성이고, 속성에 포함된 값을 통해 같은 클래스로 생성된 객체들과 구분됩니다.

다음은 객체 지향 프로그래밍의 주요 4가지 특징입니다.

[객체 지향 프로그래밍의 주요 4가지 특징]

1. 캡슐화 (Encapsulation)

- 모든 변수들과 메서드들을 클래스라고 불리는 단위에 모으는 것, 객체 안에 데이터와 메서드를 숨기는 것을 의미

- 의도치 않은 변화에서 데이터와 메서드의 안전을 유지하는 보안을 제공

- 프로그래머들은 때때로 블랙박스 또는 내부 메커니즘에 관계없이 사용할 수 있는 장치 명명

- 프로그래머는 블랙 박스 안에 포함된 데이터와 메서드를 사용하거나 접근 가능, 하지만 변경 불가

2. 상속 (Inheritance)

- 존재하는 클래스의 속성들과 메서드들을 공유하는 클래스들을 생성 가능

- 주로 코드의 재사용성에 사용

- 이미 존재하는 클래스로부터 새로운 클래스를 파생

3. 다형성 (Polymorphism)

- 영어를 예로 들면, run이라는 단어의 의미는 "달리다"이지만 다른 단어와 함께 사용하면 의미가 달라질 수 있음

- 같은 이름을 가진 메서드가 다른 상황에서는 다르게 동작하는데 다형성

- 정적 다형성(Static Polymorphism) - Method Overloading

: 메서드 오버로딩 : 동일한 이름을 가진 메소드에 대해 전달 인자를 변경함으로써, 다른 메소드 구현이 가능

- 동적 다형성(Dynamic Polymorphism) - Method Overriding

: 메서드 오버 라이딩 : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 해서 사용

4. 추상화 (Abstraction)

- 선언만 하고 구현 내용이 없는 불완전한 클래스이고, 인스턴스화 불가능

- 만약 사용하고 싶다면 다른 클래스에 추상 클래스를 확장하여 구현해야 함


'우선 개념에 이런 게 있구나'라고 알고 계시면 될 것 같습니다.

사실 글들만 봐서는 너무나 추상적인 부분들도 있어서 이해하기 힘들죠..

예제 코드와 함께 설명드리면 좋을 텐데, 개념을 종합해서 예제를 정리하려니 시간이 부족합니다 ㅎㅎ

 

다음번 포스팅은 이 내용과 이어서 예제와 함께 설명드릴 수 있도록 하겠습니다.

정말 정말 중요한 부분이기 때문에 심혈을 기울여서 만들어 보겠습니다......

따끔한 질책과 비판, 언제든지 기다리고 있으니 지적해주시면 감사하겠습니다.

오늘 포스팅 여기서 마무리하겠습니다.

출처 : 자바의 정석 3rd Edition 내용 정리

728x90
반응형

'IT > Java' 카테고리의 다른 글

Java new instance this 생성자  (0) 2021.01.05
Java private extends abstract 캡슐화, 추상클래스  (0) 2021.01.05
Java 제어문의 조건문, 반복문  (0) 2021.01.03
Java 변수와 자료형 & 연산자  (0) 2021.01.03
Java 개발환경 Setting  (0) 2020.12.24