클래스에 정적이 아닌 클래스 멤버가없는 경우 클래스의 모든 메서드를 정적으로 만드는 것이 좋습니다. 인스턴스 변수가없는 일종의 관리자와 같습니다.비 정적 클래스 멤버가 아닌 경우 클래스를 정적으로 만들어야합니까?
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
을 구현합니다. 이 경우 메서드는 정적이 아니어야하며 인스턴스를 인스턴스화하여 인스턴스를 사용하려면 무엇이든이를 전달해야합니다.
인터페이스 논리는 항상 내 마음에 (교수에 의해 가르쳐) : 정사각형 못, 원형 구멍. 둥근 구멍에 끼고 싶으면 둥근 모양이어야합니다. 당신이 존재하지 않는다면, 당신은 둥글지 않고 구멍을 통과 할 수 없습니다.
관련 문제
- 1. 정적 메서드 안의 정적 멤버가 아닌 것
- 2. 새 수정자가 기본 클래스 멤버가 아닌 경우
- 3. 비 정적 멤버가 ASP.NET MVC 앱의 인스턴스간에 공유되는 정적 클래스입니까?
- 4. C# 정적 또는 비 정적 클래스
- 5. 어떻게 정적 클래스를 정적으로 만들지 않습니까?
- 6. 정적 멤버가 아닌 정수 멤버 인 클래스 멤버 초기화
- 7. 정적 컨텍스트에서 정적 멤버가 아닌 사용이 어떻게 오류를 발생시키지 않습니까?
- 8. 모든 것을 비 정적으로 만들기
- 9. 도우미 클래스 : 정적 또는 비 정적 함수
- 10. 정적 멤버가 90 % 인 Java 클래스. 좋은 연습 또는 무엇?
- 11. 파이썬 : 클래스 정적 멤버가 자신을 가리키고 있습니까?
- 12. PHP5.3 비 정적 변수 범위에서 정적으로 작동
- 13. 모델에 액세스했지만보기가 아닌 경우 컨트롤러 또는 클래스를 만들어야합니까?
- 14. 비 정적 메서드 ..... 정적으로 호출하면 안됩니다
- 15. 정적 클래스 또는 인터페이스
- 16. 비 정적 메서드 int 정적 클래스를 호출
- 17. C#에서 정적 클래스를 만들면 정적으로 명시 적으로 선언되었는지 여부에 관계없이 내부의 메서드도 정적으로 간주됩니까?
- 18. Python 클래스 멤버가 정적 인 것처럼 동작합니까?
- 19. 정적 클래스의 비 정적 클래스 값에 액세스
- 20. 정적/비 정적 문제 Java
- 21. 정적 및 const 멤버, 정적 클래스 및 병목 현상
- 22. 비 정적 ArrayList에서 특정 요소를 정적으로 만드는 방법은 무엇입니까?
- 23. 정적이 아닌 비 정적 방법?
- 24. ViewModelLocator 멤버가 정적이 아닌 이유
- 25. 비 정적 클래스 속성 그룹
- 26. 정적 멤버가 메모리를 가져 오는 경우
- 27. 정적이 아닌 정적 멤버가 여러 정의를 갖는 이유는 무엇입니까?
- 28. 정적 클래스에서 비 정적 클래스 트리거?
- 29. 외부 클래스를 정적으로 정의하고 내부 정적 클래스를 묶을 수 있습니까?
- 30. 동기화 된 비 정적 메서드 내에서 호출되는 경우 정적 메서드를 동기화 된 것으로 만들어야합니까?
사실, 나는 그런 클래스의 모든 메소드를 정적으로하지 않는 것이 가장 바람직하다고 주장한다. 그러나 나는 그것이 의견의 문제라고 생각한다. 누군가가 그 반대라고 주장하면 너무 놀랍지 않을 것입니다. –
정적 메서드는 인터페이스를 구현할 수 없습니다. 인스턴스 필드가없는 경우에도 클래스가 인터페이스를 구현하도록 할 수 있습니다. –
@ 앤디 좋은 지적. java.lang.Runnable 인터페이스 https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html 인스턴스가 스레드에서 실행될 수 있습니다. – Dachstein