
8. 객체(Object)
현실에 존재하는 독립적이면서 하나로 취급되는 사물이나 개념
클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역에 생성된 결과물, 즉 클래스의 인스턴스
1) 객체 지향 언어
현실 세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있으며, 발생하는 모든 사건들은 객체간의 상호작용 으로 발생한다.
이 개념을 컴퓨터로 옮겨놓아 만들어낸 것이 객체지향언어이다.
2) 객체 지향 3대 특징
(1) 캡슐화(Encapsulation)
- 외부에서 함부로 접근할 수 없도록 정보은닉
- 캡슐화 원칙
- 클래스 멤버 변수에 대한 접근 권한은 private가 원칙
- 클래스 멤버 변수에 대한 연산처리를 목적으로 하는 함수들을 클래스 내부에 작성한다
- 멤버 함수는 클래스 밖엫서 접근할 수 있도록 public으로 설정한다
(2) 상속(Inheritance)
- 클래스와 클래스가 상속관계에 있을 때, 부모 클래스는 자식 클래스에 객체를 물려주는 것
(3) 다형성(Polymorphism)
- 상속을 이용해 부모 타입으로부터 파생된 여러 가지 타입의 자식 객체를 부모 클래스 타입 하나로 다룰 수 있는 기술
3) 추상화(abstraction)
필요한 객체의 유연성을 확보하기 위해 추상화 진행 후 다양하게 활용 가능
프로그램에서 필요한 요소들이 포함됨
예) 회원관리 프로그램: 이름, 주소, 성별, 주민번호 등의 요소가 필요하다. 이런 요소들을 객체 지향 프로그래밍 언어를 사용해서 변수명과 자료형을 정리한다. 정리된 내용들을 클래스 다이어그램(UML 중 하나)으로 표현하면 다음과 같은 그림을 볼 수 있다
→ 클래스에 해당 내용들을 정의한다

4) 객체의 생성 = 인스턴스화
클래스로 객체를 만드는 것
- 클래스 내부의 멤버를 활용하기 위해서 먼저 객체를 만들어야 한다
- 클래스 = stack 영역, 객체 = heap 영역
- 내부엔 멤버가 들어있다 : 필드, 메서드, 이너클래스
- 하나의 클래스에서 생성된 모든 객체는 동일 메서드(기능)을 가짐 → 구분은 속성 차이로!
- 객체 생성 코드 [A a = new A();] : A의 객체를 만들어 해당 멤버를 힙 메모리에 저장하고 저장위치에 대한 정보를 a라고 부르자 → a = 참조변수
# 종류
- 업캐스팅 : 자식 → 부모
- 항상 가능, 생략시 컴파일러가 자동진행
- 다운캐스팅 : 부모 → 자식
- 가능한 경우만 수동으로 직접 캐스팅
- 문법적으로 맞더라도 타입이 같지 않으면 에러가 발생함
- 변경할 타입의 객체가 생성되어있지 않으면 불가능
5) 객체의 활용
- 외부 호출: 참조변수를 통해서만 호출이 가능 [참조변수.필드명], [참조변수.메서드명]
- 필드의 활용: 값을 입력하거나 출력
- 메소드의 활용: 해당 클래스의 메서드를 호출
객체 배열 형식도 활용이 가능하다
객체를 저장하는 배열
배열의 자료형을 클래스명으로 지정하여 활용
(1) 선언
- 클래스명[] 배열명;
- 클래스명 배열명[];
(2) 할당
- 배열명 = new 클래스명[i];
(3) 선언과 동시에 할당
클래스명 배열명[] = new 클래스명[i];
(4) 초기화
- 인덱스를 이용한 초기화 배열명[] = new 클래스명();
- 선언과 동시에 할당 및 초기화 클래스명 배열명[] = {new 클래스명(), new 클래스명(), …};
🚨 객체 배열에 들어갈 객체를 먼저 선언해준 뒤, 객체 내 set과 get이용 가능
반응형
'JAVA' 카테고리의 다른 글
10. 자바(java) : 상속(Inherit), super, 오버라이딩(overriding) 간단 정리 (0) | 2024.04.01 |
---|---|
9. 자바(java) : 제어자 (modifier), 접근제한자, static 개념 간단 정리 (0) | 2024.04.01 |
7. 자바(java) : 배열(Array) [] 간단 정리 (0) | 2024.03.28 |
6. 자바(java) : 제어문(Control Statement) 간단 정리 (0) | 2024.03.28 |
5. 자바(java) : 연산자(Operator) 간단 정리 (2) | 2024.03.27 |