관리 메뉴

Jsecurity

Java 8일차 : static 멤버, final 본문

프로그래밍언어/Java_Language

Java 8일차 : static 멤버, final

Great king 2018. 11. 14. 12:46
static 으로 선언된 클래스의 멤버를 "정적 멤버" 라고 부르는데, 주로 공용을 목적으로 할 때 쓰인다.

공용의 개념이란, 
이 클래스에서만 사용이 국한되어는 것이 아니라 그 어떤 객체도 접근하고 사용 가능하다는 것이다.
따라서 static 으로 선언되어 있는 메인 메소드는 다른 클래스에서도 메인 메소드의 역할을 할 수가 있는것이다.

예제)

class StaticSample {

  int n;   // non-static 필드

  voidg() {...}   // non-static 메소드

  static int m;   // static 필드

  static voidf() {...} //static메소드

}





※static 의 활용
전역 변수와 전역 함수를 만들 때 활용
전역변수나 전역 함수는 static으로 클래스에 작성


공유 멤버를 작성할 때
static 필드나 메소드는 하나만 생성. 클래스의 객체들 공유


static 메소드의 제약 조건
 
static 메소드는 non-static 멤버 접근할 수 없음
객체가 생성되지 않은 상황에서도 static 메소드는 실행될 수 있기 때문에, 
non-static 메소드와 필드 사용 불가
반대로, non-static 메소드는 static 멤버 사용 가능

static 메소드는 this 사용불가
static 메소드는 객체가 생성되지 않은 상황에서도 호출이 가능하므로, 현재 객체를 가리키는 this 레퍼런스 사용할 수 없음




------------------------------------------------------------------------------------------




final 클래스 - 클래스 상속 불가

final classFinalClass {

.....

}

class SubClass extendsFinalClass{ // 컴파일오류.FinalClass상속 불가

.....

}




------------------------------------------------------------------------------------------




final 메소드 - 오버라이딩 불가

public class SuperClass {

protected final intfinalMethod(){ ...}

}

class SubClass extends SuperClass { //SubClass가 SuperClass 상속

protected int finalMethod() {... } // 컴파일오류오버라이딩 할 수없음

}





Comments