클래스에 정적이 아닌 클래스 멤버가없는 경우 클래스의 모든 메서드를 정적으로 만드는 것이 좋습니다. 인스턴스 변수가없는 일종의 관리자와 같습니다.비 정적 클래스 멤버가 아닌 경우 클래스를 정적으로 만들어야합니까?
0
A
답변
0
클래스가 인스턴스를 가지지 않을 경우 모든 메서드는 정적이어야하며 호출 할 수있는 유일한 방법입니다 (이 존재할 수 없기 때문에 myInst.myFunc()
을 수행 할 수 없습니다).
이 관련이있을 수 : Static Classes In Java
Math
예는 PI, E 등의 다른 정의를 가질 수
Math myCalculator = new Math()
myCalculator.multiply(x,y);
myCalculator
하지 않는해야 할 것이 혼란 스러울 것, 좋은 하나입니다
즉, 정적이 아닌 멤버가없는 클래스는 정적 메서드 만 사용해야합니다.
편집 : Andy Thomas가 좋은 포인트를 만들었습니다.
Math
은 인터페이스를 구현할 수 있습니다. 이는 두 가지를 곱할 수 있기 때문입니다. 동시에, 내 MultiplierAndAdder
클래스 (나는 그것이 끔찍한 클래스지만, 예를 들어 알고) 또한 Multiplies
을 구현합니다. 이 경우 메서드는 정적이 아니어야하며 인스턴스를 인스턴스화하여 인스턴스를 사용하려면 무엇이든이를 전달해야합니다.
인터페이스 논리는 항상 내 마음에 (교수에 의해 가르쳐) : 정사각형 못, 원형 구멍. 둥근 구멍에 끼고 싶으면 둥근 모양이어야합니다. 당신이 존재하지 않는다면, 당신은 둥글지 않고 구멍을 통과 할 수 없습니다.
사실, 나는 그런 클래스의 모든 메소드를 정적으로하지 않는 것이 가장 바람직하다고 주장한다. 그러나 나는 그것이 의견의 문제라고 생각한다. 누군가가 그 반대라고 주장하면 너무 놀랍지 않을 것입니다. –
정적 메서드는 인터페이스를 구현할 수 없습니다. 인스턴스 필드가없는 경우에도 클래스가 인터페이스를 구현하도록 할 수 있습니다. –
@ 앤디 좋은 지적. java.lang.Runnable 인터페이스 https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html 인스턴스가 스레드에서 실행될 수 있습니다. – Dachstein