정적 멤버 클래스

    톱레벨 클래스는 한 파일에 하나만 담으라 - [4장. 클래스와 인터페이스(아이템25)]

    소스 파일에 하나에 톱레벨 클래스(톱레벨 클래스란 파일에 정의되어 있는 가장 바깥에 있는 클래스를 말한다)를 여러 개 선언하더라도 컴파일할 때는 문제가 없다. 유효한 문법이라는 것이다. 하지만 이것은 아무런 득이 없을뿐더러 심각한 위험을 감수해야 한다. 그 이유는 한 소스 파일에 톱레벨 클래스를 여러 개 선언하면 컴파일 순서에 따라 결과가 달라질 수 있기 때문이다. 문제 상황에 대한 예시를 살펴보고, 해결책을 알아보도록 하자. 1. 문제점 💍 집기(Utensil)와 디저트(Dessert) 클래스가 Utensil.java라는 한 파일에 정의되어 있다고 하자. // Utensil.java class Utensil { static final String NAME = "pan"; } class Dessert {..

    멤버 클래스는 되도록 static으로 만들라 - [4장. 클래스와 인터페이스(아이템24)]

    중첩 클래스(nested class)란 다른 클래스 안에 정의된 클래스를 말한다. 중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야 하며, 그 외의 쓰임새가 있다면 톱레벨 클래스로 만들어야 한다. 중첩 클래스의 종류는 아래의 4가지가 있다. 정적 멤버 클래스 (비정적) 멤버 클래스 익명 클래스 지역 클래스 '정적 멤버 클래스'를 제외하고는 모두 내부 클래스(inner class)에 해당한다. '정적 멤버 클래스'와 '비정적 멤버 클래스'는 멤버 클래스에 해당한다. 이번 글을 통해 4가지 중첩 클래스에 대해서 알아보고, 왜 멤버 클래스는 되도록 static으로 만들어야 하는지 알아보고자 한다. 1. 정적 멤버 클래스 🧰 정적 멤버 클래스는 다른 클래스 안에 선언되고, 바깥 클래스의 private 멤버에도..