Dart - 객체 지향 프로그래밍

목진성·2024년 11월 4일

Dart Language

목록 보기
6/12

1. 클래스 (Class)

쉽게 말해서 붕어빵 틀이라고 생가하시면 됩니다. 반복되는 코드를 줄이기 위해 class로 정의해서 사용합니다.

class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
  
  void introduce() {
    print('안녕 ? 나는 $age살 $name !');
  }
}

속성 : name, age
생성자 : Person(this.name, this.age);
메서드 : introduce()

2. 클래스의 구성

1. 속성 (Attribute)

class 안에서 작업을 수행할 때 사용하는 데이터

  • 인스턴스 변수 (Instance Variable): 객체 에 속해 있는 변수
  • 지역 변수 (Local Variable): 특정 코드 블록 안에 선언된 변수
  • 정적 변수 (Static Variable): 객체 에 종속되지 않고, 클래스 자체에 속하는 변수

2. 메서드 (Method)

객체 의 동작 을 정의하는 함수

TIP💡 매서드와 클래스는 얼핏보면 같아보이지만, 메서드 는 클래스 에 의존하고, 함수 는 클래스 에 의존하지 않는다는 차이가 있어요.

생성자 (Constructor)

  • 기본 생성자 (Default Constructor): 매개변수 를 갖지 않는 생성자
  • 매개변수 생성자 (Parameterized Constructor): 매개변수를 갖는 생성자, 매개변수를 통해 외부에서 인스턴스 변수 들의 초기값 설정
  • 네임드 생성자 (Named Constructor): 클래스 메서드 와 같은 형식으로 호출하는 생성자

상속

기존 클래스의 기능을 확장하여 새로운 클래스를 만드는 것, 하나의 클래스 가 다른 클래스의 속성 과 메서드 를 물려받는 것

  • class [자식 클래스 이름] extends [부모 클래스 이름] { … }
class Person {
  void eat() {
    print('냠냠 !');
  }
}

class Student extends Person {
  void study() {
    print('열공 !');
  }
}

Person 은 부모 클래스, Student 는 자식 클래스! 부모 클래스를 확장한다는 의미에서 extends 라는 키워드를 사용합니다.

  • 특징
    • 부모 클래스 는 자식 클래스 에게 자신의 모든 속성 과 메서드를 상속
    • 부모 클래스 는 자식 클래스 에 있는 멤버 (속성, 메서드)를 사용 불가
    • super 를 통해 자식 클래스 가 부모 클래스 의 속성 과 메서드를 사용 가능
    • 자식 클래스 는 상속 받은 속성 과 메서드 를 재정의 (Overriding) 하거나 기능을 확장 가능
    • final 사용 시 자식 클래스에서 사용 불가!!
profile
우주를 항해하는 여행자

0개의 댓글