[Java] static 제어자

dwkim·2023년 2월 27일
  • static 필드와 메서드는 본사 직원, instance 필드와 메서드는 대리점 직원
  • 본사직원은 그들끼리만 대화가능
    = static 메서드에서는 오직 static 필드와 static 메서드에만 접근이 가능하다.

문제1
정답1

  • 나의 풀이
class Main {
	public static void main(String[] args) {
		출력("안녕");
        // 출력 : 안녕
        
		void 출력(String a) {
			System.out.println(a);
		}
        /* 
        1. 메서드 안에 메서드 정의하면 안됨!
        2. static을 붙여야 객체 생성 없이 '출력 메서드'를 호출할 수 있다.
        */
	}
}
  • 정답
class Main {
	public static void main(String[] args) {
		출력("안녕");
		// 출력 : 안녕
	}
	
	static void 출력(String str) {
		System.out.println(str);
	}
}

문제2
정답2

class Main {
	public static void main(String[] args) {
		new 사람().걷다();
		new 사람().걷다();
		new 사람().걷다();
	}
}

class 사람 {
	// instance(대리점)
	int 속도 = 3;
	
	// static(본사) 메서드
	static void 걷다() {
		System.out.println("걷는다 : 속도(" + 속도 + "km/h)"); // 불가능(x) - 속도는 static이 아님
		숨쉬다(); // 가능
        생각하다(); // 불가능(x) - static 아님
	}
	
	static void 숨쉬다() {
		System.out.println("숨쉬다.");
	}
    
    void 생각하다() {
		System.out.println("생각하다.");
	}
}

  • static으로 선언된 변수나 메서드를 객체생성해서 사용한다 해도 객체의 변수나 메서드가 생기는 것이 아니다.
    원래 static으로 선언됐던 변수의 값이 계속 바뀌는 것뿐임.

문제3
<출력>
저는 22살 홍길동 입니다.
저는 25살 홍길순 입니다.
저는 25살 홍길순 입니다.

정답3

profile
예비 백엔드 개발자

0개의 댓글