[Java] 내부 클래스와 익명 클래스
내부(inner) 클래스
클래스 안에 또 다른 클래스를 선언하는 것으로 이렇게 하면 두 클래스의 멤버에 쉽게 접근 가능하다.
클래스 끼리의 데이터를 공유할 수 있다는 점이 좋아보이지만 로직이 복잡해질 수 록 꼬일 수 있다.
public class OuterClass {
int num = 10;
String str1 = "Java";
static String str11 = "world";
public OuterClass() {
System.out.println("OuterClass constructor");
}
class InnerClass {
int num = 100;
String str2 = str1;
public InnerClass() {
System.out.println("InnerClass constructor");
}
}
static class SInnerClass {
int num = 1000;
// static 클래스는 외부 클래스 멤버에 접근 불가
String str3 = str11;
public SInnerClass() {
System.out.println("static InnerClass constructor");
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass oc = new OuterClass();
System.out.println("oc.num : " + oc.num);
System.out.println("oc.str1 : " + oc.str1);
System.out.println();
// inner 클래스
OuterClass.InnerClass in = oc.new InnerClass();
System.out.println("in.num : " + in.num);
System.out.println("in.str2 : " + in.str2);
System.out.println();
// static 클래스
OuterClass.SInnerClass si = new OuterClass.SInnerClass();
System.out.println("si.num : " + si.num);
System.out.println("si.str3 : " + si.str3);
System.out.println();
}
}
실무에서는 잘 쓰이지 않는 코딩 방법이다.
익명(anonymous) 클래스
이름이 없는 클래스로 주로 메서드를
재정의 하는 목적
으로 사용된다.
public class AnonymousClass {
public AnonymousClass() {
System.out.println("AnonymousClass constructor");
}
public void method() {
System.out.println("--AnonymousClass's method START--");
}
}
package inner;
public class Main {
public static void main(String[] args) {
// 익명 클래스는 딱 한번만 실행된다.
new AnonymousClass() {
@Override
public void method() {
System.out.println("--AnonymousClass's Override method START --");
}
}.method();
}
}
익명클래스는 인터페이스
나 추상클래스
에서 주로 이용된다.
Author And Source
이 문제에 관하여([Java] 내부 클래스와 익명 클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@conficker77/Java-내부-클래스와-익명-클래스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)