메모리, 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
'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 |