Java Nested Class

Nested Class

Static Nested Class

public class OuterOfStatic{
  static class StaticNested {
    private int value = 0;
    public int getValue() {
      return value;
    }
    public void setValue(int value){
      this.value=value;
    }
  }
}
public class NestedSample{
  public static void main(String[] args){
    NestedSample sample = new NestedSample();
    sample.makeStaticNestedObject();
  }
  public void makeStaticNestedObject(){
    OuterOfStatic.StaticNested staticNested = new OuterOfStatic.StaticNested();
    staticNested.setValue(3);
    System.out.println(staticNested.getValue());
  }
}

Inner Class

public class OuterOfInner {
  class Inner {
    private int value = 0;
    public int getValue() {
      return value
    }
    public void setValue(int value){
      this.value=value;
    }
  }
}
public class InnerSample{
  public static void main(String[] args){
    InnerSample sample = new InnerSample();
    sample.makeInnerObject();
  }
  public void makeInnerObject(){
    OuterOfInner outer = new OuterOfInner();
    OuterOfInner.Inner inner = outer.new Inner();
    inner.setValue(3);
    System.out.println(inner.getValue());
  }
}

자바파일 한개당 public 클래스는 하나만 가질수 있고 그 클래스는 파일명이랑 똑같은 클래스 여야된다.

example.java라는 파일이 있다고 하면

class example{
}
public class example2{
}

이렇게 하면 컴파일이 안된다.

public class example{
}
class example2{
}

이렇게 바꾸면 컴파일이 된다.

원문링크

자바의 신 16장 - 클래스 안에 클래스가 들어갈 수도 있구나

[Java] Nested Class(클래스 안에 클래스)

java public class 하나만 가질 수 있는 이유