코딩하렴

이너클래스에서 아우터클래스 Field 부르기

by 으렴

음.. 람다식을 써서 아우터 클래스의 변수를 한번 불러보깨오

 

람다식이 필요한건 아니지만 람다식을 일단 써봅니다.

 

@FunctionalInterface
interface LogicSeven {
	public void returnNono();
}

이렇게하고 리턴노노를 블러보깨요.

public class Using {
	public int outter = 10;	
	
	class Inner {
		int inner = 20;
		void method() {
			LogicSeven ln7 = () ->{
				System.out.println("outter :"+outter);				//안에꺼 참조
				//바깥 객체 참조를 얻기 위해서는 클래스명.this를 사용하라
				System.out.println("outter :"+Using.this.outter);
				//아우터 클래스의 변수를 사용하고 싶을 때 이렇게 사용하면 된다.
				
				System.out.println("outter :"+inner);				//this랑 똑같음
				System.out.println("outter :"+this.inner);			//함수인수와 class변수와 구분하기 위해서 this를 사용
			};
			ln7.returnNono();
		}
	}
}

여기보면 이너 클래스에서 이너 변수를 이너와 디스.이너로 불렀읍미다.

 

아우터 클래스는 다음과 같이 부르면 됩니다.

 

OuterClass.this.FieldName

 

자 그러면 메소드를 메인에서 불러봅니다.

 

public class Using_Main {
	public static void main(String[] args) {
		Using using = new Using();

		Using.Inner inner = using.new Inner();

		inner.method();
	}
}

이렇게 돌리면

 

요래요래 나옵니다.

사이트의 정보

코딩하렴

으렴

활동하기