728x90
반응형
package chap10;
class Outer1 { //외부클래스
class InstanceInner extends Object { //인스턴스 내부클래스
int iv = 100; //인스턴스 내부클래스의 멤버이고 인스턴스 변수
static int cv = 10; //인스턴스 내부클래스의 멤버이고 클래스 변수
final static int MAX = 200; //인스턴스 내부클래스의 멤버이고 상수
}
static class StaticInner { //static 내부 클래스
int iv = 300; //인스턴스 변수
static int cv = 20; //클래스 변수
final static int MAX = 400; //상수
}
void method() {
class LocalInner { //지역내부클래스(local class) : 메서드 내부에서만 사용
int iv = 500;
static int cv = 600;
final static int MAX = 700;
}
LocalInner Ic = new LocalInner(); //객체화
System.out.println("local 내부클래스 iv변수=" + Ic.iv);
// System.out.println("local 내부클래스 cv변수=" + LocalInner.cv);
System.out.println("local 내부클래스 MAX상수=" + LocalInner.MAX);
}
void method2() {
// LocalInner Ic = new LocalInner(); //method() 사용가능 클래스
InstanceInner ii = new InstanceInner();
System.out.println("InstanceInner.iv:" + ii.iv);
System.out.println("InstanceInner.cv:" + InstanceInner.cv);
System.out.println("InstanceInner.MAX:" + InstanceInner.MAX);
InstanceInner si = new InstanceInner();
System.out.println("InstanceInner.iv:" + si.iv);
System.out.println("InstanceInner.cv:" + InstanceInner.cv);
System.out.println("InstanceInner.MAX:" + InstanceInner.MAX);
}
}
public class InnerEx1 {
public static void main(String[] args) {
//InstanceInner 클래스 객체 생성
Outer1.InstanceInner ii = new Outer1().new InstanceInner(); //외부클래스의 객체화를 하고, 내부클래스 객체화 진행
System.out.println("InstanceInner.iv:" + ii.iv);
System.out.println("InstanceInner.cv:" + Outer1.InstanceInner.cv);
System.out.println("InstanceInner.MAX:" + Outer1.InstanceInner.MAX);
//StaticInner 클래스 객체 생성
Outer1.StaticInner si = new Outer1.StaticInner(); //클래스멤버
System.out.println("StaticInner.iv:" + si.iv);
System.out.println("StaticInner.cv:" + Outer1.StaticInner.cv);
System.out.println("StaticInner.MAX:" + Outer1.StaticInner.MAX);
//모든 클래스는 Object 클래스를 상속받는다.
//Object클래스의 하위 클래스임.
if(ii instanceof Object)
System.out.println("ii 객체는 Object 객체임");
if(si instanceof Object)
System.out.println("si 객체는 Object 객체임");
Outer1 out = new Outer1(); //외부클래스의 객체화
out.method();
out.method2();
}
}
728x90
반응형