JAVA 20일차

이희복·2023년 1월 25일
0

JAVA

목록 보기
25/41

클래스 변수의 4가지 용어는?

  1. 지역변수(local variable)

  • 메서드 내에서 선언된 변수로써, 메서드 실행이 끝나면 소멸

  • 초기값을 지정한 후 사용할 수 있다.
  1. 매개변수(parameters)

  • 메서드 호출 시 전달하는 값을 가지고 있는 변수

  • 선언된 곳부터 수행이 끝날 때까지 유효
  1. 인스턴스 변수(instance variable)

*인스턴스 : 클래스를 통해 생성된 객체를 해당 클래스의 인스턴스라고 한다.

  • 메서드 밖에, 클래스 안에 선언된 변수, 앞에는 static이라는 예약어가 없는 변수

  • 인스턴스가 가지는 속성을 저장하기 위한 변수로서 new 생성자()를 통해 생성될 때 만들어진다.

  • 객체를 공유하지 않는다.
  1. 클래스 변수(class variable)

  • 메서드 밖에, 클래스 안에 선언된 변수, 앞에는 ​static이라는 예약어가 있는 변수

  • 객체를 공유하는 변수로 여러 객체에서 공통으로 사용하고 싶을 때 정의한다.

  • 객체를 생성하지 않아도 클래스 명으로 접근이 가능하다.

static 변수의 접근방법은?

클래스 내부 접근

static 변수가 선언된 클래스 내에서는 이름만으로 직접 접근 가능

클래스 외부 접근

  • private 으로 선언되지 않으면 클래스 외부에서도 접근 가능

  • 접근 수준 지시자가 허용하는 범위에서 접근 가능

  • 클래스 또는 인스턴스의 이름을 통해** 접근

way.num++; 과 같이 인스턴스 이름으로 접근하는 경우는 static변수에 접근하는지, 인스턴스 변수에 접근하는지 저 문장만 보고 파악하기 어렵다.

하지만 AccessWay.num++; 처럼 클래스 이름으로 접근하면 static변수에 접근한다는 것을 문장만 보고도 알 수 있다.(클래스 이름은 첫 문자 대문자이기 때문에)

그래서 인스턴스 이름으로 static변수에 접근하는 것 보다는 클래스 이름으로 접근하는 것이 더 좋은 방법이다.

  • 수업시간 예시: 내부, 외부에서 접근

  • 수업시간 예시: 클래스 변수의 초기화 시점과 초기화 방법(선언시 초기화가 가장 좋음)

지역변수에 접근제한자를 붙이지 않는 이유

지역변수라는 개념 자체가 한 메소드 또는 반복문, 특정 모듈 안에서 사용되고 사라지는 개념이기 때문에 접근 제한자를 굳이 만들 필요가 없다

main(){
Baby cnt1 = new Baby();
Baby cnt2 = new Baby();
Baby cnt3 = new Baby();
}

출력
Baby 생성: 1
Baby 생성: 2
Baby 생성: 3

0개의 댓글