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 |