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

한지연·2023년 3월 26일
0

📘 Nested Class

  • 클래스 안에 클래스가 들어가 있음
  • 코드를 간단하게 표현하기 위하여 Nested Class를 만듦
  • 소스의 가독성과 유지보수성을 높이고 싶을 때 사용

📚 Static nested class

public class ExClass {

    private int intValue = 15;
    public String strValue = "have a nice day";
    static class InClass{

        public int innerValue = 0;

        public void setInnerValue(int innerValue) {
            this.innerValue = innerValue;
        }

        public int getInnerValue(){
            return innerValue;
        }
    }
}
  • static으로 선언
  • 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을 때 사용
  • static으로 선언된 변수에 접근 가능
  • 겉으로 보기에는 유사하지만 내부적으로 구현이 달라야 할 때 사용

📚 inner class

  • static을 사용하지 않음
  • 감싸고 있는 외부 클래스의 어떤 변수도 접근 가능
  • 캡슐화가 필요할 때, 즉 내부 구현을 감추고 싶을 때 사용
  • 다른 클래스에서 재사용할 일이 없을 때만 만들어야 함

📝 Local inner class Example

public class ExClass {
    
    private int intValue = 15;
    public String strValue = "have a nice day";
    
    class InClass{
        
        public int innerValue = 0;

        public void setInnerValue(int innerValue) {
            this.innerValue = innerValue;
        }

        public int addNum(){
            return intValue + innerValue;
        }
        
    }
}

📝 Anonymous inner class Example

...
button.setListener(new EventListener(){
	public void onClick(){
    	System.out.println("Anonymous inner class");
    }
});
  • 클래스 이름없이 메소드 구현
profile
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!

0개의 댓글