[Java] 객체와 클래스 - 객체/인스턴스/클래스, 객체 추상화, 멤버 변수/메서드,
by 우와한개발자
1. 객체와 클래스 정의
- 클래스 : 객체를 만들기 위한 틀 (blueprint, template)
- 객체 : 클래스의 인스턴스(인스턴스 중에서 하나를 콕 찝은거라고 생각하면 됨)
- 객체의 명사적 특성 : 데이터(Data), 변수(Variable), 필드(Field), 속성(Attribute)
- 객체의 동사적 특성 : 행위(Behavior), 메서드(Method), 기능(Operation)
- 속성은 행위에 영향을 준다.
2. 객체의 추상화
- 객체 추상화 : 실 객체를 클래스로 만드는 과정으로, 실세계의 객체에서 명사적 특징(속성)과 동사적특징(기능)을 추출하는 것
- 인스턴스화 : 클래스를 이용해 인스턴스를 만드는 것
- 객체 생성 : new 키워드 이용
- 참조변수 : 객체의 주소(참조값)를 저장하는 변수
- 객체의 멤버변수와 멤버메서드는 점(.)으로 구분하여 사용
3. 클래스 선언과 인스턴스 생성
1) 클래스 선언
[modifiers] class ClassName {
멤버변수 선언 // 객체의 정보를 저장
생성자 선언 // 객체 생성시 멤버변수 초기화
메서드 선언 // 객체의 동작을 정의
}
- modifiers : 제한자
- Access Level 제한자 : public, protected, package friendly(공백), private
- Usage Level 제한자 : static, final, abstract
- 클래스 이름 앞에 public이 붇으면 반드시 파일 이름과 일치해아함.
- 하나의 파일에는 하나 이하의 public 클래스만 존재할 수 있음.
2) 인스턴스 생성
- 선언된 클래스를 가지고 new 키워드(메모리 할당 연산자)를 통해 만들어진 실체
- stack메모리에 heap에 저장된 인스턴스의 주소 저장.
- JVM에서 주소값을 직접 참조할 수 없도록 막아둠.
Access Level 제한자 (접근제한자)
- public: 같은 패키지(package)가 아니어도 어느 클래스에서나 참조가능
- protected: 같은 패키지 내의 모든 클래스, 상속 관계가 있는 하위 클래스에서 참조가능
- package friendly: 같은 패키지 내의 클래스에서만 참조가능
- private: 같은 클래스 내에서만 참조가능
4. 멤버변수
1) 멤버변수 선언
[modifiers] datatype variableName;
- modifiers : 제한자
- Access Level 제한자 : public, protected, package friendly(공백), private
- Usage Level 제한자 : static, final
- 멤버 변수는 일반적으로 전부 private 으로 사용
- datatype: 기본자료형뿐만 아니라 배열과 클래스도 자료형으로 사용가능
5. 멤버 메서드
1) 메서드 선언
[modifiers] return_type methodName(parameter_list) {
...
}
- modifiers : 제한자
- Access Level 제한자 : public, protected, package friendly(공백), private
- Usage Level 제한자 : static, final, abstract
- return_type: 외부로 값을 반환
- void(반환 값이 없음)
- 기본타입 : byte, short, int, long, float, double, char, boolean
- 참조타입: 배열과 클래스 타입 등
- parameter_list: 외부로부터 값을 전달받는 데 사용되는 매개변수
- 메서드를 사용할때는 매개변수의 타입, 개수, 순서를 일치해야 호출 가능
6. 클래스 변수와 인스턴스 변수
- 클래스 변수(정적 변수 / static 변수) : 객체 생성 없이 클래스 이름만으로 참조 가능한 static 붙은 변수
- 인스턴스 변수 : 반드시 객체(인스턴스)를 생성한 후 참조가능한 static 붙지 않은 변수
'언어 > Java' 카테고리의 다른 글
| [Java] 오버로딩(Overroading)과 가변인자(... 문법) (0) | 2026.02.26 |
|---|---|
| [Java] 생성자(Constructor) - 기본생성자, this 키워드 (0) | 2026.02.26 |
| [Java] 배열 (Array) - 배열 선언 / 생성 / 초기화 / 메모리구조 / 복사 (0) | 2026.02.25 |
| [Java] 제어문 - 조건문(if else / switch case), 반복문(for / while / do while), 탈출문(break / continue / return) (0) | 2026.02.25 |
| [Java] 연산자와 2의 보수 계산 (0) | 2026.02.24 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자