OutClass outClass = new OutClass();
OutClass.InClass inclass = outClass.new InClass();
"외부 클래스.new 내부클래스임"에 유의해야 한다.
package practice;
public class OuterClass {
private int instanceVariable;
private static int staticVariable;
// 내부 클래스 선언
class InnerClass {
private int innerInstanceVariable; // 내부 클래스의 인스턴스 변수
// 내부 클래스의 정적 변수
private static final int INNER_STATIC_VARIABLE = 42;
public void innerInstanceMethod() {
System.out.println("내부 클래스의 인스턴스 메서드");
System.out.println("외부 클래스의 인스턴스 변수: " + instanceVariable);
System.out.println("내부 클래스의 인스턴스 변수: " + innerInstanceVariable);
System.out.println("내부 클래스의 정적 변수: " + INNER_STATIC_VARIABLE);
}
// 내부 클래스의 인스턴스 생성
}
public static void staticMethod() {
// 정적 메서드 내에서도 내부 클래스를 사용할 수 있습니다.
class InnerClass {
// 내부 클래스의 정적 메서드
public static void innerStaticMethod() {
System.out.println("내부 클래스의 정적 메서드");
System.out.println("외부 클래스의 정적 변수: " + staticVariable);
}
}
// 내부 클래스의 정적 메서드 호출
InnerClass.innerStaticMethod();
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
innerClass.innerInstanceVariable = 3;
System.out.println(innerClass.innerInstanceVariable);
outerClass.staticMethod();
}
}
interface Greeting {
void greet();
}
public class Main {
public static void main(String[] args) {
// 익명 내부 클래스로 Greeting 인터페이스를 구현
Greeting greeting = new Greeting() {
@Override
public void greet() {
System.out.println("안녕하세요!");
}
};
// 익명 내부 클래스의 메서드 호출
greeting.greet();
}
}