🟥용어정리🟥
*** 변수 ***
1. 클래스 변수 (class variables = static variables)
클래스 변수는 정적 변수 라고도 부른다.
클래스 변수와 정적 변수는 메소드 밖에서 static 이라는 키워드와 같이 선언된다.
정적 변수는 그 해당 클래스에서 만들어진 모든 인스턴스에서 접근이 가능하다!
2. 인스턴스 변수 (instance variables = non-static variables)
인스턴스가 생성될때 생성되며, non-static variable 이라고도 불린다.
클래스 안 혹은 메소드, 생성자(constructor) 바깥에서 정의된다.
인스턴스 별로 다른 값을 가질 수 있기에, 각각의 인스턴스 마다 고유의 값을 가져야할때에는 인스턴스 변수로 선언한다.
*** 메소드 ***
1. 클래스 메소드 (class method = static method)
메서드중에서 인스턴와 관계 없는(인스턴스변수나 인스턴스 메서드를 사용하지 않는)메서드를 클래스 메소드(static method)라 정의한다.
2. 인스턴스 메소드 (instance method = non-static method)
인스턴스메서드는 인스턴스 변수와 관련된 작업을 하는, 즉 메서드의 작업을 수행하는데 인스턴스를 필요로 하는 메소드이다.
아래 예시에 적어 놓은 주석들을 하나하나 읽어보면서
주석처리를 풀어보고 실행시켜보면 이해가 금방 될것이다!
Tip ✔
아래 코드를 모두 복사 혹은 다운로드 → IDE 에 붙여넣기 한 다음,
실행해보고 이리저리 코드를 수정해가면서
에러가 뜨면, 왜 에러가 뜨는지 직접 몸소 체험을 해봐야 경험치가 쌓입니다!
이것마저 못하는 게으름뱅이는 코딩 ㄹㅇ 접어야함 ㅅㄱ
아래 댓글창에 질문 언제든지 해주세요!
(시간되는 대로 답변해드리겠습니다)
아래 예시에서
클래스 변수, 인스턴스 변수
클래스 메소드, 인스턴스 메소드
접근 범위 테스트 해봤습니다!
참고 하시면 됩니다.
// 🟩 용어정리
// Static Field = 클래스 변수
// Non-static Field = 인스턴스 변수
// Static Method = 클래스 메소드
// Non-static Method = 인스턴스 메소드
// 클래스 멤버 = 클래스 변수 + 클래스 메소드
// Class Member = Static Field + Static Method
// 인스턴스 멤버 = 인스턴스 변수 + 인스턴스 메소드
// Instance Member = Non-static Field + Non-static Method
class ClassTest {
/////////////////
// 🟥 VARIABLE //
/////////////////
// 🟦 Class Variable
static int static_variable = 1;
// 🟦 Instance Variable
int instance_variable = 2;
///////////////
// 🟥 METHOD //
///////////////
// 🟦 Class Method
static void static_staticVariable() {
System.out.println(static_variable);
}
static void static_instanceVariable() {
// 클래스 메소드에서는 인스턴스 변수에 접근할 수 없다.
// System.out.println(instance_variable);
}
// 🟦 Instance Method
void instance_staticVariable() {
System.out.println(static_variable);
}
void instance_instanceVariable() {
System.out.println(instance_variable);
}
}
public class ClassMemberDemo {
public static void main(String[] args) {
ClassTest c = new ClassTest();
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 인스턴스 메소드가 정적 변수에 접근 -> 성공
c.static_staticVariable();
// 인스턴스를 이용해 정적 메소드(static method)에 접근 -> 성공
// 정적 메소드(static method)가 인스턴스 변수에 접근 -> 실패
c.static_instanceVariable();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 클래스 변수에 접근 -> 성공
c.instance_staticVariable();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 인스턴스 변수에 접근 -> 성공
c.instance_instanceVariable();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 클래스 변수에 접근 -> 성공
ClassTest.static_staticVariable();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 인스턴스 변수에 접근 -> 실패
ClassTest.static_instanceVariable();
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
// ClassTest.instance_staticVariable();
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
// ClassTest.instance_instanceVariable();
}
}
↓↓↓↓ 코드 다운로드 ↓↓↓↓
'🖥️프로그래밍 언어 > Java' 카테고리의 다른 글
[JAVA] 자바 지역변수, 전역변수 + 유효범위 Part2 (0) | 2022.09.19 |
---|---|
[JAVA] 자바 지역변수, 전역변수 + 유효범위 Part1 (0) | 2022.09.18 |
[JAVA] 자바 클래스 메소드(Class method) (0) | 2022.09.16 |
[JAVA] 자바 인스턴스변수(Instance variables) = Non-static variables (0) | 2022.09.14 |
[JAVA] 자바 정적변수(Static variables) = 클래스변수(Class variables) (0) | 2022.09.13 |