평행코드

Dart의 추상클래스 본문

Flutter

Dart의 추상클래스

나의 오류는 누군가 겪었던 오류 2024. 3. 7. 16:34

추상 클래스는 객체 지향 프로그래밍에서 사용되는 클래스의 한 종류입니다.

추상 클래스는 직접적으로 인스턴스화할 수 없으며, 다른 클래스들이 상속받아 사용하는 것을 목적으로 합니다.

추상 클래스는 일반 클래스와 달리 하나 이상의 추상 메서드를 포함할 수 있습니다.

추상 메서드는 구현이 없는 메서드로, 하위 클래스에서 반드시 구현되어야 합니다.

이를 통해 추상 클래스는 하위 클래스에게 특정한 동작을 구현하도록 강제할 수 있습니다.

 

추상 클래스는 abstract 키워드를 사용하여 정의됩니다.

추상 클래스는 직접 객체를 생성할 수 없기 때문에, 하위 클래스에서 추상 클래스를 상속받아 사용해야 합니다.

하위 클래스는 추상 클래스의 추상 메서드를 반드시 구현해야 하며, 그렇지 않으면 컴파일 오류가 발생합니다.

 

추상 클래스는 다음과 같은 경우에 사용될 수 있습니다:

공통된 동작을 가진 클래스들의 공통 부분을 추출하여 추상 클래스로 정의할 수 있습니다.

인터페이스의 역할을 수행하며, 하위 클래스에서 특정 동작을 구현하도록 강제할 수 있습니다.

객체를 직접적으로 생성하지 않아야 하는 경우에 사용될 수 있습니다.

 

abstract class Animal {
  String name;
  
  Animal(this.name);
  
  void eat();
  
  void sleep() {
    print("$name이(가) 잠자고 있습니다.");
  }
}

class Cat extends Animal {
  Cat(String name) : super(name);
  
  void eat() {
    print("$name이(가) 생선을 먹고 있습니다.");
  }
}

class Dog extends Animal {
  Dog(String name) : super(name);
  
  void eat() {
    print("$name이(가) 사료를 먹고 있습니다.");
  }
}

void main() {
  Cat cat = Cat("야옹이");
  cat.eat(); // 출력: 야옹이이(가) 생선을 먹고 있습니다.
  cat.sleep(); // 출력: 야옹이이(가) 잠자고 있습니다.
  
  Dog dog = Dog("멍멍이");
  dog.eat(); // 출력: 멍멍이이(가) 사료를 먹고 있습니다.
  dog.sleep(); // 출력: 멍멍이이(가) 잠자고 있습니다.
}

 

위의 예시에서 Animal은 추상 클래스로, eat() 메서드를 추상 메서드로 정의하고 있습니다.

Cat과 Dog 클래스는 Animal을 상속받아 추상 메서드인 eat()을 구현하고 있습니다.

Animal 클래스의 sleep() 메서드는 구현이 되어있으므로 하위 클래스에서 반드시 구현할 필요는 없습니다.

이렇게 추상 클래스를 사용하면 공통된 동작을 가진 클래스를 효율적으로 구조화할 수 있으며,

다형성과 상속을 통해 유연한 코드를 작성할 수 있습니다.

'Flutter' 카테고리의 다른 글

Dart의 클래스, 생성자, 네임드생성자  (0) 2024.03.07
Dart의 function, parameter, qqOperater, Typedef  (0) 2024.03.06
Dart Collection  (0) 2024.03.05
Dart의 특징과 변수  (0) 2024.03.04