반응형
1. 객체의 특징
- 객체(Object): 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중, 고유 속성을 가지고 있어 식별 가능한 것
-> 속성과 동작[필드(Field)와 메서드(Method)]으로 구성되어 있음 - 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링(object modeling)이라 함
- 객체들은 각각 독립적으로 존재하면서, 메서드 호출을 통해 다른 객체의 기능을 이용하며 동작
- 객체 지향 프로그래밍은 만들고자 하는 객체를 모델링하고,
집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 것으로
아래와 같은 단계로 진행됨- 클래스 생성
- 설계된 클래스로 사용할 객체 생성
- 생성된 객체 이용
2. 객체 간의 관계
1) 집합 관계
- 한 객체는 부품, 다른 객체는 완성품에 해당하는 관계
2) 사용 관계
- 한 객체가 다른 객체의 메서드를 호출하여 원하는 결과를 얻는 관계
3) 상속 관계
- 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계
-> 상위 객체는 종류, 하위 객체는 구체적인 사물 정도로 생각
3. 클래스와 인스턴스
- 클래스(class): 메모리에서 사용하고 싶은 객체가 있을 때, 해당 객체를 설계하는 설계도에 해당
-> 객체 생성을 위한 필드와 메서드를 정의함 - 인스턴스(instance): 클래스로부터 만들어진 객체
-> 한 클래스로부터 여러 개의 인스턴스를 만들 수 있음
1) 클래스 선언
- 클래스명(식별자, 객체의 대표 이름) 작성 규칙
규칙 | 예시 |
하나 이상의 문자로 이루어져야 함 | Car, SportsCar |
첫 글자에는 숫자가 올 수 없음 | 3Car(x) |
'$', '_' 이외의 특수문자 사용 불가 | @Car(x), %Car(x) |
자바 키워드 사용 불가 | int(x), for(x) |
- 클래스 선언 방법
public class 클래스명 {
}
// 한 소스 파일에 2개 이상의 클래스 선언도 가능
class 클래스명2 {
}
2) 객체 생성과 클래스 변수
- 클래스로부터 객체를 생성하려면 아래와 같이 new 연산자 사용
-> 객체는 메모리 힙(heap) 영역에 생성되는 것
new 클래스명();
클래스명 변수명 = new 클래스명();
- 클래스로부터 객체를 생성하고 리턴된 객체의 번지를 변수에 저장하면, 변수가 객체를 참조하게 되는 것
-> 한 클래스에서 서로 다른 여러개의 독립된 객체 생성 가능
3) 클래스의 두 가지 용도(두 용도를 모두 포한한 한 클래스를 만드는 것도 가능)
- 라이브러리(API: Application Program Interface)용: 다른 클래스에서 이용하는 용도(대부분의 클래스)
- 실행용: 프로그램의 실행 진입점인 main() 메서드를 제공하는 용도
4) 클래스의 구성 멤버
public class 클래스명 {
// 필드
int fieldName;
// 생성자
클래스명() {...}
// 메서드
void 메서드명() {...}
}
(1) 필드(Field)
- 객체의 고유 데이터/부품 객체/상태 정보를 저장하는 곳
- 선언 형태는 변수와 비슷하지만, 필드 != 변수
-> 변수와는 다르게, 생성자와 메서드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재
(2) 생성자(Constructor)
- new 연산자로 호출되는 특별한 중괄호 {} 블록
- 객체 생성 시 초기화하는 역할
-> 필드 초기화 혹은 메서드 호출로 객체 사용 준비 - 클래스 이름으로 되어 있으며, 메서드와 다르게 리턴 타입이 없음
(3) 메서드(Method)
- 객체의 동작에 해당하는, 이름이 있는 실행 중괄호 {} 블록
-> 호출 시 중괄호 블록의 모든 코드들이 일괄 실행됨 - 필드를 읽고 수정함과 동시에, 다른 객체를 생성하여 다양한 기능 수행
- 객체 간의 데이터를 전달하는 수단
-> 호출한 외부로부터 매개 값을 받아 실행에 이용하고, 실행 후 결과 값을 호출한 외부로 리턴
반응형
'자바(JAVA) > 미니 프로젝트 & 기초 공부' 카테고리의 다른 글
Java 기초 또 다시 공부하기 10일차 - 객체 지향 프로그래밍(인스턴스 멤버와 정적 멤버, 패키지와 접근 제한자) (1) | 2025.06.11 |
---|---|
Java 기초 또 다시 공부하기 9일차 - 객체 지향 프로그래밍(필드, 생성자, 메서드) (1) | 2025.06.05 |
Java 기초 또 다시 공부하기 7일차 - 배열, 열거 타입 (2) | 2025.06.02 |
Java 기초 또 다시 공부하기 6일차 - 참조 타입과 참조 변수 (1) | 2025.05.28 |
Java 기초 또 다시 공부하기 5일차 - 반복문(for문, while/do-while문, break/continue) (1) | 2025.05.23 |