정적 필드 개체는 클래스 수준에서 만들어지며 (모든 개체에 공통적이므로) 특정 필드에 정적 가져 오기가 사용되고 모든 필드를 상속하면 같은 양의 메모리가 생성됩니까?상속하는 정적 필드가 성능에 미치는 영향은 무엇입니까?
예 아래에이 기사에서 몇 개의 MyOwn 개체가 생성됩니까?
class MyOwn{}
public interface ConstantIfc {
public final static MyOwn REF = new MyOwn();
}
class A implements ConstantIfc {}
class B implements ConstantIfc {}
public class c {
public static void main(String... arg) {
A refA = new A();
B refB = new B();
}
}
static 임포트의 최종 상수 클래스가 상수 인터페이스보다 나은지 여부는 동일합니까?
업데이트 :
상수에 대한 상속을 피하는 것이 좋습니다. 구현 상속을 부적절하게 활용하면 유연성이 떨어지는 디자인으로 이어질 수 있습니다. 따라서 우리는 클래스/인터페이스의 정적 가져 오기를 더 잘 수행 할 수 있습니다. 하지만 여전히 인터페이스는 추상이며 추상화를 유지하기 위해 구현 세부 사항 (상수 변수 포함)을 포함하지 않아야합니다. 인터페이스는 구현 정보가 속하지 않는 공용 API를 설명하는 데 자주 사용됩니다. 이러한 이유 때문에 인터페이스가 아닌 클래스에 상수 데이터를 저장하는 것이 좋습니다. 고마워요.
나는 각 클래스 로더에 대해 하나의 인스턴스 만 생성된다고 생각합니다. –