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) 메서드라고 보면 된다.



  • final : 최종적이란 의미로, 초기값이 저장되면 실행 도중 값을 수정할 수 없다.

더보기
  1. final 필드 : 필드 선언이나 생성자를 통한 초기값을 주고 변경이 안된다.

  2. final 객체 : 객체 참조 변수에 final로 선언하면 그변수에 다른 참조 값을 지정할 수 없다.
                   (객체 내부 변수 값들은 변경 가능)

  3. final 클래스 : 클래스에 final을 사용시 더이상 상속이 불가능해진다.
                     (객체 내부 변수 값들은 변경 가능)

  4. final 메서드 : 메서드에 final을 사용하면 상속받은 클래스에서 부모의 final 메서드를 재정의 할 수 없다.

  5. 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
반응형