CheerUp_Cheers
Static, 싱글턴, 내포 클래스 본문
#모든것이 개체 속에 있어서 불편함
- 단순한 계산도 개체로 만들어서 해야하나?
ex) 절대값 구하기 int Math.abs(int);
공백문자개수 구하기 : StringUtils.countSpaces(String str);
- 개체 단위가 아니라 클래스 단위에서 뭔가 하고 싶을때는?
ex) 이 클래스에서 총 몇개의 개체가 있을까?
=> 정적(static)이 이런 불편함을 해결해줌(개체 범위가 아닌 클래스 범위)
#단순한 계산 시
#정적 메소드만있는 Math클래스는 개체를 못만들게 하면 안되요?
맞는 말임 -> 이런 경우 개체 생성을 못하게 막으면 됨.
- 방법 1) 생성자를 private로 막을까?
private Math() { } // private로 막고!
Math math = new Math(); // 컴파일 오류
int absValue = Math.abs(-2) // 는가능!
=> 근데 이건 꼼수라네요...
# 개체 단위가 아닌 클래스 단위
ex) 콜라공장에서 만든 총 콜라 갯수를 가져오고싶다
=> 멤버변수에 static 때려박아
- 출력은?
메소드를 static으로해서 print메소드를 만들면 됨.
-> 정적메서드에서 비정적 메소드나 비정적 멤버변수에 접근 불가.
#static 정리
1) static은 딱하나 존재
2) static이 아니면 개체에 속함
3) 비정적 -> 정적 (가능)
4) 정적 -> 비정적 (불가능)
- 장점
1) 클래스 내부에 위치하니 이름 충돌 적음
ex) A.printMethod(), B.printMethod()
2) 접근 범위 제어
#로그를 왜 남겨요~?
- System.out.println()쓰면 되잖아?
최종사용자의 콘솔에 찍어봐야 우리는 문제를 해결 불가.
-> 최종사용자의 로그파일을 달라고해서 우리가 체킹 할수 있지
-> 더 나아간다면 클라우드 저장소에 로그를 남기도록해서 보내달라 할 수 있지.
#static에 대한 비판
static은 개체 소속이 아니잖아!
순수 객체 지향 사람들 주장
- 결론
OO의 개념과 먼것은 사실.
그러나 OO의 개념과 멀다고 그게 잘못된 건 아님.
- 훌륭한 프로그래머의 자세
OO와 절차적 개념을 언제, 어디서 써야하는지 안다
-> 여기에는 절차, 여기에는 OO
-> 자바의 Static은 잘한 것.
- 개체이면서 static과 똑같이 작동하는 OO?
그걸 '싱글턴 패턴' 이라고 해.
'인프런 > 개체지향 프로그래밍 및 설계 (Java)' 카테고리의 다른 글
Static, 싱글턴, 내포 클래스 - 싱글턴 (0) | 2020.12.01 |
---|---|
Static, 싱글턴, 내포 클래스 - 디자인 패턴 (0) | 2020.12.01 |
개체 모델링1 (0) | 2020.11.26 |
클래스 (0) | 2020.11.25 |
개체지향 프로그래밍의 필요성 (0) | 2020.11.25 |