메모리, heap, stack

위의 그림처럼

먼저, RAM 메모리에 적재 되어야 CPU에서 연산이 가능합니다.

메모리에는 Heap과 Stack 영역이 존재하는데 Dart에서 Heap은 class를 제외한 상단에서 선언한 모든 메소드 및 변수 그리고 main 클래스가 가장 먼저 적재됩니다. 

그러나 메서드의 중괄호 { } 안의 영역은 stack 영역으로써, 호출될 때 stack 영역이 만들어지며 중괄호 { }안의 메서드 및 변수가 적재되고 중괄호의 종료와 함께 없어집니다.

main 클래스 밖에서 선언된 class는 객체를 Animal a = Animal(); 와 같이 생성할때 heap영역에 class안의 변수와 메서드가 적재됩니다.

위와 같이 메서드가 호출될때 stack 영역 또한 생성됩니다.

상속 특징 1. 다형성

Dog 객체가 extends를 통해 animal을 상속 받음으로써 Animal 타입을 사용할 수 있습니다.

추가 예시로

햄버거 <=> 더블햄버거 extends 햄버거
위와 같이 패티 2장인 더블햄버거를 만들때 패티 1장인 햄버거를 상속받아 만들 경우 부모 자식 모두 햄버거 인것은 변함 없습니다.

 

다양한 이름으로 불릴 수 있어야 합니다.

상속 특징 2. 데이터가 아닌 타입을 물려줍니다.

위의 그림의 알고리즘에서 손님 Love가 추가될 때 원래 손님인 Ssar을 변경해야 하는 알고리즘의 수정이 필요합니다.

상속 특징 3. 추상화를 위해 사용합니다.

손님과 직원의 개념을 추상화 시키면서 ssar, love에게 손님의 추상화 된 개념을 주입하고, cos에게 직원의 추상화 된 개념을 주입함을 통해 알고리즘의 수정을 막고 재사용성을 증대 시킵니다.

 

참고

https://www.youtube.com/watch?v=H41XvJKJ4Tk&list=PL93mKxaRDidGEaUXprXqhNvSW02xCjLZI&index=17 

 

728x90

'Study > Dart' 카테고리의 다른 글

[Dart] const 와 final 이해하기  (0) 2021.06.15
[Dart] Future, Isolate  (0) 2021.06.08
[Dart] 상속  (0) 2021.06.07
[Dart] 접근지정자, 생성자, getter, setter  (0) 2021.06.04
[Dart] 클래스  (0) 2021.06.04

+ Recent posts