Java/java study
Java - 클래스(Class) 와 객체 생성
jddng
2022. 1. 9. 14:46
728x90
반응형
클래스(Class)
클래스(Class) 란?
프로그래밍적 언어로 표현하자면 변수(valiable)와 메서드(method)의 집합이며 객체를 만들기 위한
확장 가능한 템플릿이다.
클래스의 구성
- 변수 : 클래스 Scope 안에서 존재하는 변수를 말한다.
1. 객체 변수 : 접근 제어자, 변수 타입, 변수 명을 가지는 일반적인 상태 변수
객체가 생성될 때 생성
2. 클래스 변수 : static으로 작성된 상태 변수
클래스가 로드 시점에 생성되며 Class정보로 메모리에 저장 - 메서드 : 클래스 Scope 안에서 존재하는 메서드
1. 객체 메서드 : 접근 제어자, 반환 타입, 메서드 명, 매개변수를 갖는 메서드
객체가 생성될 때 생성
2. 클래스 메서드 : static으로 작성된 메서드
: 클래스 로드 시점에 생성되며 Class정보로 메모리에 저장 - 생성자 : 클래스 Scope 안에서 존재하는 메서드
객체를 생성할 때 호출되는 메서드
별도의 생성자를 작성하지 않을 경우 컴파일러가 기본 생성자를 자동으로 만들어준다.
클래스의 데이터를 조작하는 역할을 한다.
클래스에서 사용되는 수식자
- 접근 제어자 : 적용된 키워드에 따라 해당 객체, 메서드를 이용할 수 있는 Scope를 결정
1. public : 모든 클래스에서 해당 클래스를 참조 가능
2. protect : 부모, 자식 클래스와 동일 패키지 내부에 존재하는 클래스만 참조 가능
3. default : 동일 패키지 내부에 존재하는 클래스만 참조 가능
4. private : 해당 클래스의 내부에서만 참조가능 - static : 해당 클래스의 객체를 생성하지 않아도 사용 가능
더보기
static은 언제 사용하는가?
1. 클래스를 설계할 때, 멤버 변수 중 모든 인스턴스에 공통적으로 사용하는 멤버 변수에 static을 사용
2. static이 붙은 메서드에서는 인스턴스 변수를 사용할 수 없다.
3. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려
4. 인스턴스 변수와 관련된 작업을 하는 메서드는 인스턴스 메서드,
클래스 변수와 관련된 작업을 하는 메서드는 클래스(static) 메서드라고 보면 된다.
1. 클래스를 설계할 때, 멤버 변수 중 모든 인스턴스에 공통적으로 사용하는 멤버 변수에 static을 사용
2. static이 붙은 메서드에서는 인스턴스 변수를 사용할 수 없다.
3. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려
4. 인스턴스 변수와 관련된 작업을 하는 메서드는 인스턴스 메서드,
클래스 변수와 관련된 작업을 하는 메서드는 클래스(static) 메서드라고 보면 된다.
- final : 최종적이란 의미로, 초기값이 저장되면 실행 도중 값을 수정할 수 없다.
더보기
- final 필드 : 필드 선언이나 생성자를 통한 초기값을 주고 변경이 안된다.
- final 객체 : 객체 참조 변수에 final로 선언하면 그변수에 다른 참조 값을 지정할 수 없다.
(객체 내부 변수 값들은 변경 가능) - final 클래스 : 클래스에 final을 사용시 더이상 상속이 불가능해진다.
(객체 내부 변수 값들은 변경 가능) - final 메서드 : 메서드에 final을 사용하면 상속받은 클래스에서 부모의 final 메서드를 재정의 할 수 없다.
- final 매개변수 : 메서드 매개변수에 final 사용시 해당 매개변수는 메서드내에서 변경이 불가능하다
- sysnchronized : 해당 지정자가 붙은 메서드와 스코프에 스레드 간 동기화를 진행
- native : 해당 지정자가 붙은 필드 및 메서드는 Java가 아닌 네이티브 코드를 사용한다
(C/C++ 등으로 작성된 DDL이나 JNI에서 제공하는 코드를 말한다.)
인스턴스(객체)의 할당
new 연산자와 생성자를 사용하여 객체 생성 시 Heap 메모리 공간에 객체가 메모리 할당받고,
객체의 멤버들은 Heap영역 메모리 공간에 연속으로 나열/할당이 된다.
인스턴스를 new 연사자를 통해 생성하면 위 그림과 같이 Heap 영역에 메모리가 할당된다. 이때, 초기화하지
않은 변수들은 메모리에 할당될 때, 자동으로 각 자료형에 맞는 초기값으로 저장된다.
- char = \u0000
- byte, short, int = 0
- long = 0L
- float = 0.0f
- double = 0.0
- boolean = false
- 배열, 레퍼런스 = null
728x90
반응형