static을 사용하는 중첩 클래스: 클래스 안에 static을 붙인 클래스. 밖의 클래스 직접 참조 불가
Java
public class JavaHouse {
private String address;
private LivingRoom livingRoom;
public JavaHouse(String address) {
this.address = address;
this.livingRoom = new LivingRoom(10);
}
public LivingRoom getLivingRoom() {
return livingRoom;
}
public static class LivingRoom {
private double area;
public LivingRoom(double area) {
this.area = area;
}
}
}
Kotlin
class House(
private val address: String,
private val livingRoom: LivingRoom
) {
class LivingRoom(
private val area: Double
)
}
static을 사용하지 않는 중첩 클래스
Java
public class JavaHouse {
private String address;
private LivingRoom livingRoom;
public JavaHouse(String address) {
this.address = address;
this.livingRoom = new LivingRoom(10);
}
public LivingRoom getLivingRoom() {
return livingRoom;
}
public class LivingRoom {
private double area;
public LivingRoom(double area) {
this.area = area;
}
public String getAddress() {
return JavaHouse.this.address;
}
}
}
Kotlin
class House(
private val address: String,
private val livingRoom: LivingRoom
) {
inner class LivingRoom(
private val area: Double
) {
val address: String
get() = [email protected]
}
}