본문 바로가기
study/Java

[Java] 27. 내부클래스1

by 금이패런츠 2022. 3. 23.
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();
	}
}

10장 내부클래스.pdf
0.50MB

728x90
반응형