[Part 1][3주차] static, 싱글턴, 내포 클래스 / 상속
Closed this issue · 5 comments
wansoo05 commented
Contents
static, 싱글턴, 내포 클래스 / 상속
탐구 키워드
static, 싱글턴, 내포 클래스
- static
- 디자인 패턴과 싱글턴
- 내포 클래스
상속
- 상속
공통주제
- 람다식
질문은 Comment를 통해서
ingyuseong commented
-
Static nested class는 어떤 경우에 유용하게 활용되는지 궁금합니다.
-
익명 클래스(anonymous class)가 클래스를 상속하는 경우 혹은 두 개 이상의 인스턴스를 구현하는 경우가 가능한지, 가능하다면 문법이 어떻게 되는지(코드를 어떻게 작성해야하는지) 궁금합니다.
둘 다 예제도 있으면 좋을 것 같네요 👍
ingyuseong commented
- 강의에서 전반적으로 상속의 목적은 재사용성이다(102. is-a, has-a 부분에 명시되어있음). 라고 설명하고 있습니다. 하지만, 상속은 코드의 재활용을 목적으로 만들어진 문법이 아니다. 상속을 통해 연관된 일련의 클래스들에 대해 공통적인 규약(protocol)을 정의할 수 있다는 점이 핵심이다. 라는 주장도 있습니다. 이외에도 다양한 주장이 많은데, 상속의 목적에 대한 개인의 의견이 궁금하네요.
bohub12 commented
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
처럼 표현이 편리해지고 문법적으로 깔끔해진다.
비정적 내포 클래스의 경우
OuterClass outerObject = new OuterClass()
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
처럼 따로 인스턴스를 만들어야 하므로 깔끔한 느낌이 들지 않는다. 수업에서도 이 내용에 대해서 다루긴 해서 적기 애매했지만 찾아봐도 어떤 경우에 유용하게 쓰이는 지는 못찾아서 그냥 적엇다..
wansoo05 commented
- 확실하진 않지만... static nested class는 외부 클래스와 독립적이어서 static nested class를 사용하여 private 생성자만 있는 외부 클래스를 인스턴스화 할 수 있습니다.내부 클래스에서는 수행할 수 없습니다. 예를들어서
public class A {
private A(){ ... }
static class B {
....
}
}
내부 클래스인 경우는 A를 생성하고 B를 생성해야해서 A를 생성하는 것이 불가능 하기 때문에 B를 생성을 못합니다. 따라서 이런 경우에서는 static nested class가 잘 활용 될 것 같습니다.
그리고 내부 클래스 자체가 외부 클래스에대한 참조가 있는데 이것은 메모리 참조가 유지된다는 뜻이니까 메모리 누수와 관련이 있어서 대체로 static nested class를 써야한다라고 들었습니다.
ingyuseong commented
@staycozyboy 3번에 대한 답을 섹션 13 193강에서 찾았네요.
상속의 동작에서 재사용성만을 논하는 건 반쪽짜리라고 강의에서 명확하게 밝히고 있습니다.
자식이 따라야하는 공통의 인터페이스(프로토콜)을 정의하는 것도 중요하다고 하네요!