ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 : 최종적이란 의미로, 초기값이 저장되면 실행 도중 값을 수정할 수 없다.

    더보기
    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

     

     

     

     

    반응형

    '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

    댓글

Designed by Tistory.