20210711 TIL

김진태·2021년 7월 11일
0

TIL

목록 보기
24/28
  • index

제어자

  • 클래스와 클래스 멤버(멤버 변수,메서드)에 부가적인 의미 부여.
  • 하나의 대상에 여러 제어자를 같이 사용가능(접근 제어자는 하나만)

접근제어자(access modifier)

  • public
  • protected,
  • (default)
  • private

그 외

  • static
  • final
  • abstract
  • native
  • transient
  • synchronized
  • volatile
  • strictfp

static

  • 클래스의, 공통적인
제어자대상의미
static멤버 변수- 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다.
- 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다.
- 클래스가 메모리에 로드될 때 생성된다.
메서드- 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.
-static메서드 내에서는 인스턴스멤버들을 직접 사용할 수 없다.
// 객체 생성없이 사용 가능
public class j_static {

    // 간단 초기화, 명시적
    static int width = 200;      // 클래스변수
    static int height = 120;     // 클래스 변수

    static { //클래스 초기화 블럭
        int sum;
        int avg;
    }

    static int max() { //클래스 메서드 (static 메서드)
        // 인스턴스 변수, 인스턴스 메서드 사용 x
        // 객체를 만들고 나서 사용할 수 있기 때문.

        return width>height ? width:height;

    }
}

final

  • 마지막의, 변경될 수 없는
제어자대상의미
final클래스변경될 수 없는 클래스. 확장될 수 없는 클래스가 된다.
그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
메서드- 변경될 수 없는 메서드.
final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다..
멤버변수변수 앞에 final이 붙으면,
값을 변경할 수 없는 상수가 된다.
public class f_final { //조상이 될 수 없는 클래스
    final int  MAX_SIZE = 10; // 값을 변경할 수 없는 멤버변수(상수)
    
    final int getMaxSize(){ //오버라이딩할 수 없는 메서드(변경불가)
        final int lv =MAX_SIZE; //값을 변경할 수 없는 지역변수(상수)
        
        return MAX_SIZE;
    }
}

final class

  • 상속계층의 가장 마지막.
  • String - 보안
  • math - 메서드 집합

abstract

  • 추상의 , 미완성의
제어자대상의미
abstract클래스클래스 내에 추상 메서드가 선언되어 있음을 의미한다.
메서드선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다..
package com.javaStudy.modifier;

abstract class a_abstract { //추상 클래스 (추상 메서드를 포함한 클래스)

    abstract void move(); // 추상 메서드 (구현부가 없는 메서드)
    // 추상메서드가 한개라도 있으면 추상 클래스
    // 미완성 메서드
    // 메서드들이 미완성이기 때문에 클래스도 미완성

    // a_abstract a = new a_abstract (); 에러 . 추상클래스의 인스턴스 생성 불가.

    //사용하려면 상속을 통해 몸통을 완성해 주어야 한다.
}
profile
안녕!

0개의 댓글