☕ 자바 JAVA/☕ 클래스와 함수 Class & Method

[JAVA]제어자 modifier-접근 제어자 & 그 외

뉴이 NUEY 2024. 3. 31. 22:53
반응형

 

제어자 modifier
: class와 class member(변수, method)에 부가적인 의미 부여
(마치 영어 형용사처럼)

 

종류는 두가지가 있는데

  1. 접근 제어자
    public, protected, (default), private.
    중 하나만 사용가능.
  2. 그       외
    static, final, abstract, native, transient, synchronized, volatile, strictfp.
    중복가능.
 

접근제어자 : public, 그 외 제어자 : static & final


아래로는 중복 가능한 그외 static, final, abstract 에 대한 설명 

 

static
: class의, 공통적인
  • member변수 = cv:class vairable
    - 모든 instance에 공통적으로 사용되는 class변수가 된다.
    - class 변수는 instance를 생성하지 않고도 사용 가능하다.
    - class가 memory에 load될 때 생성된다.
  • method
    - instance를 생성하지 않고도 호출이 가능한 static method가 된다.
    - static method 내에서는 instance member들을 직접 사용할 수 없다. 
class StaticTest {
    static int width = 200;         // class 변수(static 변수)
   
    static {                        // class 초기화 block
        // static변수의 복잡한 초기화 수행
    }

    static int max(int a, int b) {  // class method(static method)
        return a > b ? a : b;
    }
}

 

* memory 참조

https://yeun-devlog.tistory.com/entry/%EB%8B%A8%EC%88%9C%ED%9E%88-%EC%A0%95%EB%A6%AC%ED%95%9C-JVM%EA%B5%AC%EC%A1%B0%EC%99%80-Memory-static

 

[JAVA]단순히 정리한 JVM구조와 Memory(+ static)

*설명하기에 앞서 JVM은 이 페이지에서 설명하는 것보다 복잡한 구조를 가지고 있음을 안내드립니다. Class / Heap / Stack 으로 나누어 코드의 흐름이 JVM에서 구조를 따라 어떻게 흘러가는 지 간단히

yeun-devlog.tistory.com


final
: 마지막의, 변경될 수 없는
  • class
    - 변경될 수 없는 class, 확장될 수 없는 class가 된다.
      그래서 final로 지정된 class는 다른 class의 조상이 될 수 없다.
    - 대표적으로 String과 Math class가 있다.
      (Math class는 모두 static으로 되어있음)
  • method
    - 변경될 수 없는 method, final로 지정된 method는 overriding을 통해 재정의 될 수 없다.
  • member변수 & local변수
    - 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다.
final class FinalTest {         // 조상이 될 수 없는 class
    final int MAX_SIZE = 10;    // 값을 변경할 수 없는 member변수(상수)
   
    final void getMaxSize() {   // overriding할 수 없는 method(변경불가)
        final int LV = MAX_SIZE;// 값을 변경할 수 업슨 local변수(상수)
    }
}

abstract
: 추상의, 미완성의
  • class
    - class 내에 추상 method가 선언되어 있음.
    - 추상 class의 instance 생성불가.
      ex) AbstractTest a = new AbstractTest(); -> error
  • method
    - 서언부만 작성하고 구현부는 작성하지 않은 추상 method.
abstract class AbstractTest {   // 추상 class(추상 method를 포함)
    abstract void move();       // 추상 method(구현부{ }가 없음)
}

 

 

반응형