혼공자 6-5

Merong·2022년 10월 6일
0

혼공자

목록 보기
1/4

인스턴스 멤버와 정적 멤버

인스턴스 멤버란

  • 객체를 생성해 참조변수로 접근이 가능한 필드, 메소드를 뜻함

정적 멤버란

  • 정적(Static) '고정된' 이라는 의미
  • 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
  • Static 키워드를 붙이면 모든 클래스에서 사용가능

정적메소드 선언시 주의할 점

  • 정적메소드를 선언할때는 이들 내부에 인스턴스 필드나
    인스턴스 메소드를 사용할수 없음

public class ClassName{
// 인스턴스 필드
  int field1;
  //인스턴스 메소드
  void method1(){...}


// 정적 필드
  Static int field2;
  //정적 메소드
  Static void method(){...}



  Static void method3(){
    this.field1 = 10; //   (x)컴파일 에러
    this.method();  //   (x)컴파일 에러
    field2 = 10;  // (o)
    method2(); // (o)
  }
}

정적 메소드에서 인스턴스 멤버를 사용하고 싶다면 객체를 먼저 생성후 참조 변수로 접근해야합니다

Static void method(){
 ClassName obj = new ClassName();
 obj.field1 = 10;
 obj.method();
 }

final

final은 최종적이라는 뜻을 가지고 있다
초기값이 저장되면 이것이 최종적인 값이 되어
프로그램 실행 도중에 수정할수 없다

그렇다면 final은 상수인가?

아니다

final 필드는 객체마다 저장되고 생성자의 매개값을 통해서 여러가지 값을 가질수 있기 때문에 상수가 될수 없다

0개의 댓글