본문 바로가기

프로그래밍/java

Jenkov.com - Java Nested Classes

http://tutorials.jenkov.com/java/nested-classes.html


자바 Nested Class 종류는 네 가지(?)나 있다. Local / Anonymous 클래스는 거의 써보지 않았으나, 


* Static Nested Class : 말 그대로 nested static class 

public class Outer { public static class Nested() {} }

Outer.Nested nested = new Outer.Nested();


* Normal Nested Class : 말 그대로 내장 클래스

public class Outer { public class Inner() {} }

Outer.Inner inner = new Outer().new Inner();


* Local Class : 메소드 내에 포함된 클래스.

 - 자바8 에서는 메소드 내의 final, effectually final 선언된 변수는 접근이 가능

 - static 메소드에 포함된다고 하더라도, 로컬 클래스는 static declaration이 불가능

public class Outer {

    public void dummy() {

        class Local { }

        Local instance = new Local();

    }

}


* Anonymous Class : 명시적인 클래스명이 없이 클래스 선언이 가능한 클래스.

public class SuperClass { public void dummy() {} }

SuperClass instance = new SuperClass() {

    public void dummy() {

        System.out.println("this is anonymous overriding dummy method called.");
    }

}


effectually final : 명시적 final이 없더라도 컴파일러가 변경이 없다고 판단되는 범위까지는 final로 인지

'프로그래밍 > java' 카테고리의 다른 글

Jenkov.com - Java Abstract Class  (0) 2015.04.21
Jenkov.com - Java String  (0) 2015.04.14
Java Math Operators and Math Class  (0) 2015.03.16