JAVA 용어에 대한 정리( 인스턴스 멤버, 정적 멤버 등 )

Jakezo·2022년 1월 4일
0

Java

목록 보기
9/9
post-custom-banner

Step 1: 인스턴스 멤버와 클래스 멤버

인스턴스 멤버와 클래스 멤버라는 용어를 책에서 읽더라도 부끄럽게도 Class안 필드와 메서려니 하고 디테일에 집중하지 않았습니다. 좀 더 개념적으로 정확한 의미에 대해 가볍게 다시 한 번 정리하고 넘어가겠습니다.

~ 멤버

멤버는 영어로 Member = 해석하면 구성원이라고 합니다.우리가 사용하는 멤버의 종류는 크게 2가지로 구분합니다.① 필드 ( Field )② 메서드 ( Method)

인스턴스( Instance ) 멤버

인스턴스 메버란 New를 통해 객체를 생성한 후 사용할 수 있는 필드와 메서드를 말합니다.인스턴스 멤버에서도 객체 내부의 인스턴스 멤버에 접근하려면 this를 통해 가능합니다.

public class Test {
    //인스턴스 필드
    private int three;
    
    public Test( int three ) {
    //this를 통해 인스턴스 멤버에 접근할 수 있다. this.three는 위의 인스턴스 필드를 가르킵니다.
        this.three = three;
    }
    
    //인스턴스 메서드
    public int multiply( int a, int b ) {
        return a*b;
    }
}

클래스 멤버 = 정적 멤버 = Static 멤버

객체를 생성하지 않고도 사용할 수 있는 필드와 메서드를 말합니다.

public class Test {
    //클래스 필드
    public static int ONE       = 1;
    public static String TWO    = "TWO";
    public static String FOUR;
    
    // 클래스 메서드
    public static int sum( int a , int b ) {
        return a + b;
    }
    
}

Step 2: Final

final 필드

final 필드는 한번 초기화되면 더는 수정할 수 없는 필드를 말합니다. 만약 외부에서 주입해주는 값으로 초기화해주고 싶다면 생성자를 이용하면 됩니다. 다만 생성자에서도 초기화해주지 않는다면 컴파일 에러가 납니다.

public class Test {
    private final int one = 10;
    private final int two;
    
    public Test( int two ) {
        this.two = two;
    }
}

static final = 상수

위에서 살펴 본 것처럼 final 필드는 한번 초기화되면 더는 값을 수정할 수 없다고 하였습니다. 그렇다면 final 필드를 상수라고 하면 되지 않을까요? 그렇지 않습니다. 상수란 불변의 값을 말합니다. 위의 final 변수 중 TWO는 생성자로 인해 객체마다 원하는 값으로 세팅할 수 있기 때문에 공용성을 띄지 못합니다. 때문에 모든 클래스가 공유하고 더는 바꿀 수 없는 값인 static final을 상수라고 부릅니다. 상수는 대문자로 쓰는것이 관례입니다. 혼합된 이름이라면 언더바를 사용합니다. 꼭 선언시 초기화 해주어야 하지마 복잡한 값이라면 정적 블록에서 초기화할 수 있습니다.

public class Test {
    private static final String MY_NAME = "김석진";
		private static final int TWO;
    
    static {
        TWO = 100;
    }
}

final 메서드

최종적인 메서드로 더이상 오버라이딩(Overriding) 할 수 없는 메서드를 말합니다. 즉 부모 메서드에 final이 붙어있다면 더이상 자식클래스에서 재정의 할 수 없습니다.

public class Test {
    public final int sum( int a, int b ) {
        return a + b;
    }
}

final 클래스

최종적인 클래스로 더이상 상속할 수 없는 클래스가 됩니다.

public final class Test {
    public int sum( int a, int b ) {
        return a + b;
    }
}
profile
탐험가
post-custom-banner

0개의 댓글