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();
}
}