java static_2

0

Java 공부

목록 보기
10/18

static메서드의 구현과 활용, 변수의 유효 범위

static 메서드 만들기

  • serialNum 변수를 private으로 선언하고 getter/setter 구현
    private을 사용하는 이유는 외부에서 serialNum을 수정하지 못하게 하기위해서.

getter/setter 구현 중에서 getter만 사용하여 수정하지 못하게 설정.

public class Employee {
	private static int serialNum = 1000; // private을 사용하여 외부에서 수정하지 못하게 해줌
	private int employeeId;
	private String employeName;
	private String department;
	public Employee() {
		serialNum++;
		employeeId = serialNum;
	}
	public static int getSerialNum() {  // getter 만 사용하고 setter는 삭제
		return serialNum; 
	}
	public int getEmployeeId() {
		return employeeId;
	}
	public void setEmployeeId(int employeeId) {
		this.employeeId = employeeId;
	}
	public String getEmployeName() {
		return employeName;
	}
	public void setEmployeName(String employeName) {
		this.employeName = employeName;
	}
	public String getDepartment() {
		return department;
	}
	public void setDepartment(String department) {
		this.department = department;
	}
}
  • 클래스 이름으로 호출 가능 ( 클래스 메서드, 정적 메서드 )
System.out.println(Employee.getSerialNum());

static 메서드(클래스 메서드)에서는 인스턴스 변수를 사용할 수 없다

  • static 메서드는 인스턴스 생성과 무관하게 클래스 이름으로 호출 될 수 있다.
  • 인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수를 사용할 수 없음
	public static int getSerialNum() { // 스태틱 메서드에서 인스턴스 변수는 사용할 수 없다.
    
		int i = 0; // 지역변수: getSerialNum함수 내부에서 생성된 함수.
        
//		employeeName = "Park"; // 인스턴스 변수/ 일반멤버변수 를 사용할 수 없다. 
// 		즉 static메서드에서 사용못함!!!

		serialNum = 1000; 
        // 스태틱변수 사용가능! 로드될때 serialNum은 이미 메모리에 있는 상태이고, 
        // 일반메서드getSerialNum() 에서 사용하는데 지장없다.
        
		return serialNum;
	}

0개의 댓글