상속은 그냥 자식이 부모의 코드만
재사용 할 뿐 구조적으론
자식과 부모는 아무런 관련 없는 독립적인
관계로 생각했는데
상속을 하면 메모리가 낭비된다는 말을 들었음
그럼 독립적이다 라는 내 생각이 틀린건가?
아니면 이런 구조인건가?
class a
{
int x;
int y;
}
class b : a
{
// a와 b는 독립적이지만 상속하는 순간
x,y 변수를 b 클래스에 생성하기 때문에
메모리가 낭비될수 있다는 것?
}
- dc official App
그대로 긁어서 gpt한테 슛~ - dc App
ㅇㅇ 독립적이지 않다고 잘 설명해주네 - dc App
그거 맞음
이거 맞다고? - dc App
상위 클래스에 쓸데없는 변수가 메모리 먹는 건 맞음 근데 상황에 따라 다르기 때문에 무조건이라고 하긴 좀 그렇고 상속 말고 합성으로 하겠다고 쪼그만 클래스를 별도 클래스로 만들어서 인스터스로 새로 할당하면 기본적으로 인스턴스 자체가 먹는 메모리가 있어서 더 낭비일 수도 있음
자식이 부모 클래스 구조를 가지니까 당연히 부모보다 차지하는 메모리 크기가 크지
부모에 없는 변수/함수를 추가하는 순간부터 부모보다 사이즈가 커질거고 근데 이걸 낭비라고 보는건 좀 그렇고 부모-자식 관계를 활용하면서 당연히 발생하는 부분이라고 봐야함
ㅇㅎ 부모보다 크다는 말이었나 - dc App
알못이라 그러는데 소규모 인디게임 만들때 이런거까지 고려해야 됨?
전 그냥 원리가 궁금해서 - dc App
돌아가기만 하면되지않나 - dc App
알아서 나쁠건없지 ㅇㅇ
개발이 느려지는 이유중 하나가.. 하드코딩이라 생각함 제가 그럼..
전혀 이해하지 못하는 것 같은데? 애초에 코드를 재사용한다는 개념으로 int x랑 int y라는 멤버 변수를 재사용하고 있는 거잖아 뭐가 낭비야
만약 클래스의 여러 변수가 쓸모없어서 메모리 차지만 한다고 생각된다면, 부모는 더 간단한 구조로 만들고 다른 상속하는 자식을 또 만들어서 사욘하면 되지
리스코프 치환 원칙이 재정의 메소드에 대한 내용이라면 리버스 변수 버전으로 개같이 쓰는 경우 많음
기본적으로 상속은 부모 클래스에서 가져올 수 있는것만 가져 오는게 아님 물론 private으로 접근 제한자를 설정하면 자식 클래스에서 그것에 접근을 못하겠지만 엄연히 갖고는 있는거임 그래서 부모클래스의 크기 + a 라고 보면 됨