JAVA :: Test100_클래스와 인스턴스(static)

2023. 9. 12. 22:48· 📚 Study/Java

static  변수(클래스 변수)와 static 메소드(클래스 메소드)

// ※ 탄생 시점~!!!
// ※ 공유~!!!
// 실습 편의상 접근제어지시자 생략
public class Test100
{
// ※ 클래스 변수 또는 클래스 메소드는
// 클래스 정보가 로딩되는 순간 메모리 할당이 이루어지며
// 클래스 이름 또는 객체(인스턴스)를 통해 접근할 수 있다.
// 즉, new 연산자를 통해 메모리를 할당받지 않아도
// 사용이 가능하다는 것이다.
static int a = 10; //-- static 변수(클래스 변수, class 변수, 정적 변수)
int b = 20; //-- non-static 변수(인스턴스 변수, instance 변수)
// ※ 인스턴스 변수 또는 인스턴스 메소드는
// 동일한 클래스의 메소드에서는 바로 접근하는 것이 가능하지만
// 클래스 메소드에서는 접근할 수 없다.
void write() //-- non-static 메소드(인스턴스 메소드, instance 메소드)
{
System.out.println("인스턴스 메소드 → 클래스 변수 a : " + a );
System.out.println("인스턴스 메소드 → 인스턴스 변수 b : " + b );
}
static void print() //-- static 메소드(클래스 메소드, class 메소드, 정적 메소드)
{
System.out.println("클래스 메소드 → 클래스 변수 a : " + a );
//System.out.println("클래스 메소드 → 인스턴스 변수 b : " + b );
//--==>> 에러 발생(컴파일 에러)
}
public static void main(String[] args)
{
System.out.println("main() 메소드 → 클래스 변수 a : " + Test100.a);
//-- 클래스 변수에 접근하기 위해서는
// 클래스명.변수명 의 형태로 클래스의 이름을 통해
// 접근하는 것이 가능하다. (this 가 뺏긴 클래스명. 문법을 static이 가져간거임)
//--==>> main() 메소드 → 클래스 변수 a : 10
System.out.println("main() 메소드 → 클래스 변수 a : " + a);
//-- 같은 클래스 내부에 존재하기 때문에
// 클래스의 이름을 생략하는 것이 가능하다.
//--==>> main() 메소드 → 클래스 변수 a : 10
Test100.print();
//--==>> 클래스 메소드 → 클래스 변수 a : 10
print();
//--==>> 클래스 메소드 → 클래스 변수 a : 10
//-- 클래스 메소드에서 클래스 메소드의 호출은 가능하며,
// 클래스명.메소드명() 의 형태로 접근하여 호출하는 것이 가능하다.
// 또한, 지금은 같은 클래스 내부에 존재하기 때문에
// 클래스의 이름을 생략한 경우에 해당한다.
//System.out.println("main() 메소드 → 인스턴스 변수 b : " + b);
//--==>> 에러 발생(컴파일 에러)
//System.out.println("main() 메소드 → 인스턴스 변수b : " + Test100.b);
//--==>> 에러 발생(컴파일 에러)
//Test100.write();
//--==>> 에러 발생(컴파일 에러)
//write();
//--==>> 에러 발생(컴파일 에러)
//Test100 클래스 기반 인스턴스 생성
Test100 ob = new Test100();
//System.out.println("main() 메소드 → 인스턴스 변수 b : " + b);
//--==>> 에러 발생(컴파일 에러)
//System.out.println("main() 메소드 → 인스턴스 변수b : " + Test100.b);
//--==>> 에러 발생(컴파일 에러)
// 생성된 인스턴스를 통해 인스턴스 변수에 접근
System.out.println("main() 메소드 → 인스턴스 변수b : " + ob.b);
//--==>> main() 메소드 → 인스턴스 변수b : 20
//write();
//--==>> 에러 발생(컴파일 에러)
// 생성된 인스턴스를 통해 인스턴스 메소드에 접근(호출)
ob.write();
//--==>> 인스턴스 메소드 → 클래스 변수 a : 10
// 인스턴스 메소드 → 인스턴스 변수 b : 20
// 생성된 인스턴스를 통해 클래스 변수에 접근
System.out.println("main() 메소드 → 클래스 변수 a : " + ob.a);
//--==>> main() 메소드 → 클래스 변수 a : 10
// 생성된 인스턴스를 통해 클래스 메소드에 접근*호출)
ob.print();
//--==>> 클래스 메소드 → 클래스 변수 a : 10
// ※ 클래스 변수나 클래스 메소드는
// 생성된인스턴스명.변수명
// 생성된인스턴스명.메소드명()
// 의 형태로도 접근(호출)이 가능하다.
// 하지만
// 클래스명.변수명
// 클래스명.메소드명()
// 의 형태로 접근(호출)하는 것이 일반적이다.
System.out.println("main() 메소드 → 클래스 변수 a : " + a);
System.out.println("main() 메소드 → 클래스 변수 a : " + Test100.a);
System.out.println("main() 메소드 → 클래스 변수 a : " + ob.a);
//--==>> main() 메소드 → 클래스 변수 a : 10
// main() 메소드 → 클래스 변수 a : 10
// main() 메소드 → 클래스 변수 a : 10
System.out.println();
// Test100 클래스를 기반 인스턴스 생성
Test100 ob2 = new Test100();
ob2.a = 10000; //-- 클래스 변수
ob2.b = 10000; //-- 인스턴스 변수
System.out.println("ob2 확인 -------------------");
ob2.write();
//--==>> ob2 확인 -------------------
// 인스턴스 메소드 → 클래스 변수 a : 10000
// 인스턴스 메소드 → 인스턴스 변수 b : 10000
System.out.println("ob 확인 --------------------");
ob.write();
//--==>> ob 확인 --------------------
// 인스턴스 메소드 → 클래스 변수 a : 10000
// 인스턴스 메소드 → 인스턴스 변수 b : 20
}
}
저작자표시 (새창열림)
'📚 Study/Java' 카테고리의 다른 글
  • JAVA :: Test102_클래스와 인스턴스(난수를 발생 시켜 가위, 바위, 보 프로그램 구현)
  • JAVA :: Test101_클래스와 인스턴스(클래스의 개념을 활용하여 점수를 입력 받아 총점, 평균 계산하는 프로그램 구현)
  • JAVA :: Test099_클래스와 인스턴스(요일을 출력하는 프로그램 구현)
  • JAVA :: Test098_클래스와 인스턴스(정보 은닉과 접근제어지시자)
bono-hye
bono-hye
bono-hye
공부를 합시다👩🏻‍💻
bono-hye
전체
오늘
어제
  • 분류 전체보기 (506)
    • 📚 Study (225)
      • Java (148)
      • Oracle (28)
      • JDBC (4)
      • Javascript (9)
      • JSP & Servlet (19)
      • JQuery (6)
      • Spring (9)
      • Springboot (0)
      • 개인 공부 (2)
    • ✏️ 문제풀이 (280)
      • 백준 (181)
      • 프로그래머스 (99)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리
hELLO · Designed By 정상우.v4.2.1
bono-hye
JAVA :: Test100_클래스와 인스턴스(static)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.