Dart언어 OOP 객체지향프로그래밍

최정석·2023년 11월 20일
0
post-thumbnail

Class 선언

void main(){
  Idol bts = Idol("방탄소년단", ["지수", "제이홉"]);
  bts.name = "에이핑크";    // block
}
class Idol {
  final String name;
  final List<String> members;
  Idol(this.name, this.members);
}
  • immutable 하게 하기위해 final로 선언
  • const constructor를 사용하면 값이 같은 인스턴스는 같은 인스턴스가 된다.
    • 단 빌드 당시 타입을 알 수 있어야함.
    • DateTime.now() 같은 상황은 불가능
  • _classname: 프라이빗 클래스 다른 파일에서 import 해도 사용할 수 없음

Class 상속

class Idol {
  String name;
  int membersCount;
  Idol({                          // contructor 생성
    required this.name,
    required this.membersCount,
  });
  void sayName() {
    print('저는 ${this.name}');
  }
  void sayMembersCount() {
    print("${this.name} 은 ${this.membersCount} 명의 멤버가 있습니다.");
  }
}
class BoyGroup extends Idol {
  BoyGroup(
    String name,
    int membersCount,
  ) : super(                         // super를 이용해 부모 컨스트럭터 상속
          name: name,
          membersCount: membersCount,
        );
}
  • 상속 - inheritance - super
  • 상속은 부모클래스에서 자식으로만 넘겨줌

Override

class TimesTwo {
  final int number;
  TimesTwo(this.number); 
  int calculate() {
    return number * 2;
  }
}
class TimesFour extends TimesTwo {
  TimesFour(
    int number,
  ) : super(number);
  
  int calculate() {
    return super.calculate() * 2;
  }
  • super를 사용해서 부모요소의 메서드를 가지고 override 할 수 있음

Static

  • static은 instance에 귀속되지 않고 class에 귀속된다.
  • 인스턴스를 만들지 않아도 class를 이용해서 사용할 수 있음

interface

  • interface => class BoyGroup implements IdolInterface{}
  • 인터페이스 선언 앞에 abstract를 붙이면 인터페이스 자체를 인스턴스로 사용할 수 없음

OOP (Object Oriented Programming)

  • 모든 class의 최상위 부모는 Object
  • 따라서 객체지향프로그래밍

0개의 댓글