2017-05-15 2 views
0

클래스에 정적이 아닌 클래스 멤버가없는 경우 클래스의 모든 메서드를 정적으로 만드는 것이 좋습니다. 인스턴스 변수가없는 일종의 관리자와 같습니다.비 정적 클래스 멤버가 아닌 경우 클래스를 정적으로 만들어야합니까?

+0

사실, 나는 그런 클래스의 모든 메소드를 정적으로하지 않는 것이 가장 바람직하다고 주장한다. 그러나 나는 그것이 의견의 문제라고 생각한다. 누군가가 그 반대라고 주장하면 너무 놀랍지 않을 것입니다. –

+1

정적 메서드는 인터페이스를 구현할 수 없습니다. 인스턴스 필드가없는 경우에도 클래스가 인터페이스를 구현하도록 할 수 있습니다. –

+1

@ 앤디 좋은 지적. java.lang.Runnable 인터페이스 https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html 인스턴스가 스레드에서 실행될 수 있습니다. – Dachstein

답변

0

클래스가 인스턴스를 가지지 않을 경우 모든 메서드는 정적이어야하며 호출 할 수있는 유일한 방법입니다 (이 존재할 수 없기 때문에 myInst.myFunc()을 수행 할 수 없습니다).

이 관련이있을 수 : Static Classes In Java

Math 예는 PI, E 등의 다른 정의를 가질 수

Math myCalculator = new Math() 
myCalculator.multiply(x,y); 

myCalculator하지 않는해야 할 것이 혼란 스러울 것, 좋은 하나입니다

즉, 정적이 아닌 멤버가없는 클래스는 정적 메서드 만 사용해야합니다.

편집 : Andy Thomas가 좋은 포인트를 만들었습니다.

Math은 인터페이스를 구현할 수 있습니다. 이는 두 가지를 곱할 수 있기 때문입니다. 동시에, 내 MultiplierAndAdder 클래스 (나는 그것이 끔찍한 클래스지만, 예를 들어 알고) 또한 Multiplies을 구현합니다. 이 경우 메서드는 정적이 아니어야하며 인스턴스를 인스턴스화하여 인스턴스를 사용하려면 무엇이든이를 전달해야합니다.

인터페이스 논리는 항상 내 마음에 (교수에 의해 가르쳐) : 정사각형 못, 원형 구멍. 둥근 구멍에 끼고 싶으면 둥근 모양이어야합니다. 당신이 존재하지 않는다면, 당신은 둥글지 않고 구멍을 통과 할 수 없습니다.

관련 문제