[JAVA/자바] 객체 (Object)
객체 지향 언어
객체지향 특징
1. 캡슐화 (Encapsulation)
2. 상속 (Ingeritance) + 추상화 (Abstraction)
3. 다형성 (Polymorphism)
객체 지향 언어란?
현실 세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있으며,
발생하는 모든 사건들은 객체 간의 상호작용이다.
이 개념을 컴퓨터로 옮겨 놓아 만들어낸 것이 객체지향 언어이다.
현실에서 객체(Object)란?
현실세계에서 독립적으로 존재하는 것들 (유형, 무형, 개념 등등 ...)
자신의 속성(값, data)과 기능(동작, 행동)을 다른 것들과 구분되어 식별 가능한 것
자바에서 객체(Object)란?
클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역에 생성된 것
객체 지향 언어
현실에 존재하는 독립적이면서 하나로 취급되는 사물이나 개념으로
객체 지향 언어에서 객체의 개념은 클래스에 정의된 내용대로 메모리에 할당된 결과물(Object)
- 클래스 (class)
객체의 특성(속성, 기능)에 대한 정의를 한 것
ex) 제품의 설계도, 빵 틀
- 추상화 (abstraction)
유연성을 확보하기 위해 구체적인 것은 제거한다는 의미
작성하려는 클래스의 속성과 기능 중
프로그램에서 필요한 공통점을 추출하고, 불필요한 공통점을 제거하는 과정
추상화 과정
1. 구현하고자 하는 프로그램에서 필요한 객체들을 생각 (ex. 쇼핑몰)
2. 그 객체들이 가지는 공통적인 속성, 기능들을 모두 추출 (ex. 이름, 나이, 주소, 전화번호, 혈액형, 등....)
3. 추출한 것들을 가지고 구현하고자 했던 프로그램의 실질적인 목적에 맞춰 불필요한 속성, 기능 제거 (ex. 혈액형 등....)
4. 추려진 속성들의 자료형, 변수명 정하기
- 캡슐화 (Encapsulation)
추상화를 통해 정리된 데이터들과 기능을 하나로 묶어 관리하는 기법
클래스의 가장 중요한 목적인 데이터의 접근 제한을 원칙으로 하여
클래스 외부에서 데이터의 직접 접근을 막고,
대신 데이터를 처리하는 함수들을 클래스 내부에 작성하는 방법
캡슐화 원칙
1. 클래스의 멤버 변수에 대한 접근 권한은 private을 원칙으로 한다. (직접 접근을 막기 위해
2. 클래스의 멤버 변수에 대한 연산처리를 목적으로 하는 함수들을 클래스 내부에 작성한다.
3. 멤버 함수는 클래스 밖에서 접근할 수 있도록 public으로 설정한다.
객체(Instance)의 할당
new 연산자와 생성자를 사용하여 객체 생성 시 Heap 메모리 영역에
서로 다른 자료형의 데이터가 연속으로 나열 / 할당된 객체 공간
객체 생성 구문 - Student s = new Student();
* 기본 자료형이 아니기 때문에 주소 값을 담고 있다
* Heap 영역에 할당된 공간에는 JVM의 초기값들이 세팅되어있음