flutter 인터페이스

jokil·2023년 12월 5일
0

플러터

목록 보기
4/15

■ 추상클래스(인터페이스 사용)

추상 클래스는 추상 메서드를 포함하는 클래스다. 추상 메서드 -> 선언만 되고 정의가 없는 메서드.

추상 클래스는 그냥은 인스턴스화 못한다.

다른 클래스에서 implement를 하여 기능을 완성하는 상속 재료로 사용된다.

내가 추상 메서드를 가져올 그 대상이 되는 클래스는 implement로 가져오고

그 클래스를 쓸 장소에서는 @Override 키워드를 사용해야한다.

코드를 보자

abstract Interface class VehicleInterface { // 추상 클래스는 abstract로 시작함
  void honk(); // honk뜻은 경적 울릴 때 울리다 뜻임. 아무 기능도 안넣었기 때문에 추상메서드임
}

class Vehicle implements VehicleInterface { // implements를 사용해서 VehicleInterface를 추상클래스랑 도킹
  String color;

  Vehicle(this.color);

   // 오버라이드를 사용함으로서 추상메서드를 가져옴
  void honk() {
    print("경적 빠앙");
  }

  void drive() {
    print("드라이브하고 있는 차 색깔은 $color");
  }
}

class Car extends Vehicle {
  int carNumber;

  Car(String color, this.carNumber) : super(color);

  
  void drive() {
    print("자동차로 드라이브");
  }

  
  void honk() {
    print("경적을 울렸다");
  }
}

void main() {
  Vehicle myVehicle = Vehicle('blue'); // 부모 클래스에 있는 생성자
  myVehicle.drive(); // 부모 클래스에 있는 Vehicle(this.color)에 blue를 전달.

  Car myCar = Car('green', 486); // Car생성자로 green와 486를 넘김
  myCar.drive(); // 인스턴스 호출
  myCar.honk();
  print("내 차 넘버는 ${myCar.carNumber}"); // 결과: 내 차 넘버는 8282
}

이런식으로 쓰면 된다.

솔직히 코드 분석은 했지만 어떤 상황에서 써야할지 몰라 GPT에게 물어봤다

!https://blog.kakaocdn.net/dn/n7DQs/btshqjJnEQG/1Wd3yTvlhHDLMOc2gn0Jk1/img.png

이런 상황에 사용하자.

■ 인터페이스

인터페이스의 조건은

모든 메서드는 추상 메서드 여야 한다.

필드를 가지지 않는다.

인터페이스의 효과

  1. 같은 인터페이스를 구현한 클래스들은 공통 메서드를 구현하고 있음을 보장.

  2. 어떤 클래스가 인터페이스를 구현하고 있다면, 적어도 그 인터페이스에 정의된 메서드를 가지고 있다는 것이 보증됨.

둘이 비슷한 말인데

요약하면 이런 말인거 같다..

우리 회사 사람들이 같은 프린터기 쓰는걸 보장한다는 느낌..? 아님말고;

같은 프린터를 쓴다는 느낌은 아니라 한다..

기능적으로는 같은 프린터를 쓴다는 느낌을 받으면 된다.

profile
주니어 개발자에서 점핑점핑

0개의 댓글