Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]InnerClass2_Inner Class에서 this의 사용 본문
Contents
접기
[핵심]
1. InnerClass에서 this의 사용에 대해 알아보자.
2. 이런 형태는 어디에서 사용되는지 알아보자.
[예제코드]
MyUtil.java
package test.mypac;
public class MyUtil {
private String owner = "김구라";
private String a = "a";
private void test() {
System.out.println("MyUtil 테스트중입니다.");
}
/*
내부 클래스 안에서 바깥에 자신을 포함하고 있는 클래스의
멤버(필드, 메소드)는 자유롭게 자기것처럼 접근해서 사용할 수 있다.
이런 편리함 때문에 android프로그래밍 할 때 종종 사용된다.
웹프로그래밍엔 이런 구조가 없다. 앱에는 있당!
*/
public class User{
public void doSomething() {
String a = "inner의 a";
//바깥에 자신을 포함하고 있는 객체의 참조값을 가리키는 방법
//바깥클래스명.this이다.
System.out.println(MyUtil.this.owner);
MyUtil.this.test();
//User클래스의 동일한 이름의 필드와 메소드가 없다면 MyUtil.this생략가능
System.out.println(owner); //바깥의 owner을 의미
test(); //바깥의 test를 의미
//두 a가 무엇인지 확인하기
System.out.println(a); //inner의 a를 의미
System.out.println(MyUtil.this.a); //바깥의 a를 의미
//아래의 타입을 확인해보세요.
MyUtil m= MyUtil.this;
User u=this;
System.out.println(m);
System.out.println(u);
}
}
}
MyUtil.java 의 doSomething() 메소드 호출 시 실행결과
//doSomething 호출 시 실행결과
김구라
MyUtil 테스트중입니다.
김구라
MyUtil 테스트중입니다.
inner의 a
a
test.mypac.MyUtil@15db9742
test.mypac.MyUtil$User@6d06d69c
[코드설명]
01. InnerClass에서의 this의 사용
┌MyUtil.java
▲위 그림에서 보이진 않지만 MyUtil클래스 내부에 User클래스가 있다.
이때 User클래스를 Inner Class라고 한다.
이때 MyUtil 클래스의 멤버변수와 메소드를 사용하려면
MyUtil.this.변수명 혹은 MyUtil.this.메소드명() 으로 사용할 수 있다.
▲또한 User클래스(InnerClass)에서 MyUtil.this와 this가 가리키는 참조값이 다름을 알 수 있다!
02. 안드로이드 프로그래밍할 때 자주 사용하는 형태!
내부 클래스 안에서 바깥에 자신을 포함하고 있는 클래스의 멤버(필드, 메소드)는 자유롭게 자기것처럼 접근해서 사용할 수 있다. 이런 편리함 때문에 android프로그래밍 할 때 종종 사용된다.
(웹프로그래밍엔 이런 구조가 없다.)
'공부 > JAVA' 카테고리의 다른 글
[JAVA]InnerClass3_퀴즈_Inner Class 객체 생성하기 (0) | 2020.12.29 |
---|---|
[JAVA]InnerClass1_클래스와 메소드 내에 정의할 수 있는 멤버 (0) | 2020.12.29 |
[JAVA]String도 일종의 클래스이다! (0) | 2020.12.29 |
Comments