안드로이드(혹은 자바)의 몇 몇 class들을 보면
protected 생성자가 있는 것을 볼수가 있는데
이러면 이걸 상속받지 않고서는 new 연산자로 객체 생성을 못하잖습니까?
물론 static 메소드로 객체를 생성하는 메소드를 제공하는 경우도 있지만,
아무튼....
질문입니다!!!
그러면 어떤 목적으로, 무슨 이유때문에, 무슨 용도로 이렇게 생성자를 protected로 하는 걸까요?
일단은 자기 자신을 상속받도록 강제하는 묘수가 있는 것 같은데...
속쉬원한 답변좀 부탁드립니다.

가끔은 뒤도 돌아보자... 이 만큼 왔구나...!
그러니까 상속받는 클래스만 생성자를 사용하도록 함을 통해서 얻고자하는 바가 뭐냐 하는겁니다.
그러니까 생성자를 protected로 함으로 통해서 도달하고자 하는 목적이 있을 것 같은데,
'상속받아야만 내 클래스 쓸수 있다'라고 그냥 괜히 심술부리는 건 아닐것 같은데요...
싱글턴 패턴에 대해서 좀더 설명을 해 주시면요...
static 메소드로 객체를 생성하게 되고, 재 호출 하여도 이미 생성된 객체를 반환하게 됩니다.
늘 같은 객체를 반환받기 때문에 해당 객체의 변수를 전역변수처럼 사용할 수 있게 됩니다.
...
역시 싱글턴 패턴을 확인해보셔야.. 정확하겠죠?@!^^;;
그 클래스의 인스턴스를 얻어내려면 new를 하지말고 다른 형태로 사용하라는 것을 강제하는 겁니다.
이 경우 어떤식으로 인스턴스를 얻어내야 하는지는 클래스의 문서를 보면 알 수 있습니다. 보통 이를 위한 static method가 존재합니다.
다른 분들이 말씀하신 바와 같이 singleton패턴이 이 idiom을 이용합니다.
A a = new A(); // error
A a = A.someStaticMethod(); // OK
protected constructor인 경우 상속해서 확장하는 것까지는 허용을 하는 경우고 상속까지 허용을 안하려면 private constructor나 final class를 사용합니다.
단짝님 답변 감사합니다.
음.... 레오나님 설명을 통해 빛이 많이 비취네요 ^__^ 감솨...
음... '디자인 패턴'이라는 책을 좀 봐야겠네요...
감사합니다.
아즈라엘님,
오~~ 좋은 정보 감사합니다.
이펙티브 자바.... 이걸로 좀더 내공을 쌓아야겠습니다^^
* * * * * * * * * * * * * *
아즈라엘님, 이펙티브 자바 영어로된 자료가 구글링하니까 나오네요. 한글판 번역이 별로라고해서 영어로 한번 씨름해 볼까합니다.
아무튼 좋은 정보감사합니다^^




음 싱글턴 패턴을 말씀하시는건가