메모/물음표
instance / static
쿠룽지
2024. 4. 11. 11:35
728x90
반응형
내부 클래스를 사용할지 정적(static) 클래스를 사용할지 결정
- 관계의 강도:
- 내부 클래스는 외부 클래스의 인스턴스와 밀접한 관계를 가지며, 주로 해당 인스턴스의 상태에 의존하는 경우에 사용됩니다.
- 정적 클래스는 외부 클래스의 인스턴스와 독립적으로 존재하며, 주로 유틸리티 기능을 제공하거나 독립적인 작업을 수행하는 경우에 사용됩니다.
- 재사용성과 모듈화:
- 정적 클래스는 다른 클래스에서 재사용될 수 있는 유틸리티 기능을 제공하는 경우에 적합합니다. 따라서 다른 클래스에서도 자주 사용되는 기능을 제공하는 경우에 유용합니다.
- 내부 클래스는 주로 외부 클래스와 함께 사용되며, 외부 클래스의 기능을 확장하거나 보완하는 데 사용됩니다.
- 설계 및 구현의 편의성:
- 정적 클래스는 외부 클래스의 인스턴스를 생성할 필요가 없으므로 구현이 간단할 수 있습니다. 또한 정적 멤버를 사용하여 클래스의 상태를 유지하고 공유할 수 있습니다.
- 내부 클래스는 외부 클래스의 인스턴스에 대한 접근이 필요할 때 유용합니다. 이 경우 내부 클래스는 외부 클래스의 인스턴스 변수 및 메서드에 쉽게 접근할 수 있습니다.
- 코드의 가독성 및 유지 보수성:
- 내부 클래스는 외부 클래스와 밀접한 관계를 가지므로, 관련된 기능을 함께 그룹화하여 코드의 가독성을 높일 수 있습니다. 그러나 내부 클래스가 너무 많거나 복잡하면 코드를 이해하기 어려워질 수 있습니다.
- 정적 클래스는 외부 클래스와 독립적으로 존재하기 때문에, 클래스 간의 의존성이 낮아지고 코드의 모듈화 및 유지 보수가 용이해질 수 있습니다.
정적(static) 클래스와 인스턴스(instance) 클래스는 각각의 특성과 용도를 가지고 있기 때문에 일반적으로 함께 사용되지 않습니다. 그러나 이 둘을 완전히 혼합해서 사용하는 것은 아니라고 할 수는 없습니다. 예를 들어, 인스턴스 클래스 내에서 정적 멤버를 사용하는 것은 가능합니다.
정적 클래스와 인스턴스 클래스를 함께 사용하는 경우는 다음과 같은 상황에서 발생할 수 있습니다:
- 정적 클래스 내에서 인스턴스 클래스의 인스턴스를 생성하여 사용하는 경우:
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
반응형