하나의 객채를 여러 개채가 공유해야 할때 어떻게 하나요???
글쓴이: jic5760 / 작성시간: 목, 2016/02/25 - 2:03오후
class Parent { protected int m_a; } class Child1 : Parent { private int m_b; void func(){ this.m_b = base.m_a; // m_a 접근가능 } } class Child2 : Parent { private int m_c; void func(){ this.m_c = base.m_a; // m_a 접근가능 } }
간단하게 이런 코드가 있을 때 Child1, Chile2에서 같은 Parent 객체를 공유하고 싶습니다.
Parent p = new Parent(); Child1 c1 = (Child1)p; Child2 c2 = (Child2)p; // p.m_a 접근못함.
뭐 이런 개념인데 이런건 안되자나요..ㅠㅠ
Child가 아닌 다른 곳에서는 Parent의 protected을 사용하지 못하고
Child에서만 Parent의 protected을 사용하고 싶은데 방법을 모르겠습니다..ㅠㅠ
이런 경우에는 어떻게 해야 하나요?
일단 지금은
class Parent { protected int m_a; public Parent(Parent me) { this.m_a = me.m_a; // 복사 } } class Child1 : Parent { private int m_b; public Child2(Parent parent) : base(parent) { } void func(){ this.m_b = base.m_a; // m_a 접근가능 } } class Child2 : Parent { private int m_c; public Child2(Parent parent) : base(parent) { } void func(){ this.m_c = base.m_a; // m_a 접근가능 } } Parent p = new Parent(); Child1 c1 = new Child1(p); Child2 c2 = new Child2(p);
이런식으로 하고 있는데 이러면 완전한 공유가 되지 않아서..ㅜㅜ
Forums:
의견
1. 프로그래밍 언어는 C#을 쓰신다고 생각하겠습니다.
Child가 아닌 다른 곳에서는 Parent의 protected을 사용하지 못하고 Child에서만 Parent의 protected을 사용하고 싶다고 하셨는데,
protected 자체가 이미 자신과 자신의 하위 객체 내부에서만 자유로이 접근하게 만드는 보호 수준입니다.
protected나 스코프(scope)로 검색하셔서 더 알아보셔요.
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=KO-KR&k=k(protected_CSharpKeyword);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5.2);k(DevLang-csharp)&rd=true
3. protected랑은 별 관련이 없이, 단 하나만 존재하는 객체의 값을 공유하기 위해 당장 떠오르는 방법은 두 가지입니다.
3.1) static field
3.2) singleton
답변을 달고 보니 질문의 의도와 맞지 않았을지도 모르겠다는 생각도 드네요.
다른 분들의 답변도 들어보시는 것이 좋을 거라 생각합니다.
저는 이렇게 생각했습니다.
댓글 달기