Test118 중첩 클래스 종류 / 지역 클래스(로컬 클래스, local class)
※ 지역 클래스(로컬 클래스, local class)
: 메소드 내부에...『public class 클래스명』 or 『public static class 클래스명』
Test2 .java
class Test2 //-- outer class
{
static int a=10; //-- 전역변수 멤버변수 static변수(클래스변수)
int b=20; //-- 전역변수 멤버변수 instance변수
void write() //-- 첫 번째 write() 메소드
{
System.out.println("write()...");
final int c=30; //-- 지역변수 상수화된변수(값이변하지않는변수)
int d=40; //-- 지역변수 (값이 수시로 변할 수 있는 변수)
// ※ 변수 c 와 변수 d 는ㄴ 둘 다 지역변수이지만...
// c 는 final 변수이기 때문에 두 번째 write() 메소드에서
// 언제 접근하더라도 고정된 값임을 보장받을 수 있다.
// 반면에 d 는 그 값이 수시로 변동될 수 있는 상황이므로
// LocalTest 클래스의 인스턴스 생성 시점을 보장 받을 수 없기 때문에
// d 에 접근하는 것은 피해야 한다.
// 메소드 안에 존재하는 또 다른 클래스(local class)
class LocalTest //-- inner class
{
void write() //-- 두 번째 write() 메소드
{
System.out.println("write()...②");
System.out.println("a : " + a);
System.out.println("b : " + b);
System.out.println("c : " + c);
//System.out.println("d : " + d);
//--==>> 에러 발생 (인스턴스 지역변수는 가변성을 띄기 때문에 할당 시기를 염려. 자바는 에러를 내버린다.)
}
}
// 첫 번째 write() 메소드에서 생성한 인스턴스
LocalTest ob1 = new LocalTest();
ob1.write(); //-- 두 번째 write() 메소드 호출
}
}
Test118.java
public class Test118
{
public static void main(String[] args)
{
Test2 ob2 = new Test2();
ob2.write(); //-- 첫 번째 write() 메소드 호출
}
}
cmd
write()...
write()...②
a : 10
b : 20
c : 30
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ Test120_ 중첩 클래스 ④ / 무명 클래스(익명 클래스, annonymous class) (0) | 2018.06.16 |
---|---|
JAVA_ Test119_ 중첩 클래스 종류 / 지역 클래스(로컬 클래스, local class) (0) | 2018.06.16 |
JAVA_ Test117_ 중첩 클래스 종류 / static 중첩 클래스 / 내부 클래스 / 지역 클래스 / 무명 클래스 (0) | 2018.06.16 |
JAVA_ Test116_ 인터페이스(Interface) / 인터페이스를 활용하여 성적 처리 프로그램을 구현 (0) | 2018.06.16 |
JAVA_ Test115_ 인터페이스(Interface) 정의 / 『extends』 vs 『implements』 쓰이는 영역 정의 (0) | 2018.06.16 |
댓글