8_15

2019. 8. 15. 11:46프로그래밍/Java

inner classs: 클래스안에 클래스

 

이너클래스는 아우터의 메모리를 마음대로 쓸 수 있음

주로 이벤트 처리할때 많이씀

 

로컬이너클래스: 클래스안에 특정클래스를 만들면 

 

public class MemberInnerClass { //outer class

	private int data1=1;
			int data2=2;
	protected int data3=3;
	public int data4=4;
	
	public MemberInnerClass() {
		System.out.println("Outer");
		
	}
	
	//실제 멤버클래스에는 데이타가 없는데 마치 내거처럼 씀  이것이 바로 이너클래스의 장점  ,,아우터클래스를 제한없이 쓸수있음
	//static Member 는 스태틱 필드만 접근가능 그래서 안좋음
	
	
	class Member{ //Member inner class
		public Member() {
			System.out.println("Inner");
			System.out.println(data1);
			System.out.println(data2);
			System.out.println(data3);
			System.out.println(data4);
			}
		}
	
	
	public static void main(String[] args) {
		MemberInnerClass mic = new MemberInnerClass(); //아우터 객체를만들고
		MemberInnerClass.Member mem=  mic.new Member();//아우터 안에 이너클래스에서 가져옴
		
		//MemberInnerClass.Member mem2 = new MemberInnerClass().new Member();
		아우터클래스  멤버클래스 이너클래스
	}

}

 

//궁극적인 목표 아우터에있는 클래스를 내거처럼 쓰는거


public class MemberInnerClass { //outer class

	private int data1=1;
			int data2=2;
	protected int data3=3;
	public int data4=4;
	
	public MemberInnerClass() {
		System.out.println("Outer");
		
	}
	
	public void disp() {
		
		//지역변수
		int data5 =10;
		class Member{ //local inner class
			public Member() {
				System.out.println("Inner");
				System.out.println(data1);
				System.out.println(data2);
				System.out.println(data3);
				System.out.println(data4);
				System.out.println(data5);
				}
			}
		Member mem = new Member();   //지역이 로컬이기때문에 안에서 해결해야함
	}
	
	public static void main(String[] args) {
		
		MemberInnerClass mic = new MemberInnerClass();
		mic.disp();
		
	}

}

 

'프로그래밍 > Java' 카테고리의 다른 글

제네릭  (0) 2019.08.15
anonymous class  (0) 2019.08.15
interface  (0) 2019.08.14
interface  (0) 2019.08.14
추상클래스  (0) 2019.08.14