-
Java - 클래스(Class) 와 객체 생성Java/java study 2022. 1. 9. 14:46반응형
클래스(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) 메서드라고 보면 된다.- 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
반응형'Java > java study' 카테고리의 다른 글
Java - 생성자(Constructor)와 this 키워드 (0) 2022.01.09 Java - 메서드 오버로딩과 오버라이딩 (0) 2022.01.09 Java - LinkedList, Stack, Queue 구현하기 (0) 2022.01.02 JUnit 5 (0) 2022.01.02 Java - 제어문 (0) 2022.01.01 - 변수 : 클래스 Scope 안에서 존재하는 변수를 말한다.