메모/물음표

instance / static

쿠룽지 2024. 4. 11. 11:35
728x90
반응형


내부 클래스를 사용할지 정적(static) 클래스를 사용할지 결정

  1. 관계의 강도:
    • 내부 클래스는 외부 클래스의 인스턴스와 밀접한 관계를 가지며, 주로 해당 인스턴스의 상태에 의존하는 경우에 사용됩니다.
    • 정적 클래스는 외부 클래스의 인스턴스와 독립적으로 존재하며, 주로 유틸리티 기능을 제공하거나 독립적인 작업을 수행하는 경우에 사용됩니다.
  2. 재사용성과 모듈화:
    • 정적 클래스는 다른 클래스에서 재사용될 수 있는 유틸리티 기능을 제공하는 경우에 적합합니다. 따라서 다른 클래스에서도 자주 사용되는 기능을 제공하는 경우에 유용합니다.
    • 내부 클래스는 주로 외부 클래스와 함께 사용되며, 외부 클래스의 기능을 확장하거나 보완하는 데 사용됩니다.
  3. 설계 및 구현의 편의성:
    • 정적 클래스는 외부 클래스의 인스턴스를 생성할 필요가 없으므로 구현이 간단할 수 있습니다. 또한 정적 멤버를 사용하여 클래스의 상태를 유지하고 공유할 수 있습니다.
    • 내부 클래스는 외부 클래스의 인스턴스에 대한 접근이 필요할 때 유용합니다. 이 경우 내부 클래스는 외부 클래스의 인스턴스 변수 및 메서드에 쉽게 접근할 수 있습니다.
  4. 코드의 가독성 및 유지 보수성:
    • 내부 클래스는 외부 클래스와 밀접한 관계를 가지므로, 관련된 기능을 함께 그룹화하여 코드의 가독성을 높일 수 있습니다. 그러나 내부 클래스가 너무 많거나 복잡하면 코드를 이해하기 어려워질 수 있습니다.
    • 정적 클래스는 외부 클래스와 독립적으로 존재하기 때문에, 클래스 간의 의존성이 낮아지고 코드의 모듈화 및 유지 보수가 용이해질 수 있습니다.

 

 

 

 


정적(static) 클래스와 인스턴스(instance) 클래스는 각각의 특성과 용도를 가지고 있기 때문에 일반적으로 함께 사용되지 않습니다. 그러나 이 둘을 완전히 혼합해서 사용하는 것은 아니라고 할 수는 없습니다. 예를 들어, 인스턴스 클래스 내에서 정적 멤버를 사용하는 것은 가능합니다.

정적 클래스와 인스턴스 클래스를 함께 사용하는 경우는 다음과 같은 상황에서 발생할 수 있습니다:

 

 

  1. 정적 클래스 내에서 인스턴스 클래스의 인스턴스를 생성하여 사용하는 경우:
public class OuterClass {
    static class StaticInnerClass {
        void method() {
            InstanceInnerClass instanceInner = new InstanceInnerClass();
            instanceInner.instanceMethod();
        }
    }
    
    class InstanceInnerClass {
        void instanceMethod() {
            System.out.println("This is an instance method in InstanceInnerClass.");
        }
    }
}

 

 

2. 인스턴스 클래스 내에서 정적 멤버를 사용하는 경우:

public class OuterClass {
    class InstanceInnerClass {
        void instanceMethod() {
            System.out.println("This is a static field: " + staticField);
        }
    }
    
    static int staticField = 10;
}

 

728x90
반응형