Dart 자바와 다른점(상속,구현)

장동완·2023년 11월 29일
0

오름캠프 Dart 과정

목록 보기
2/4
💡 앞서 얘기하자면 자바에 interface 가 Dart에선 사용을 안하며 좀 다르게 동작하기에 각 개념들을 잘 숙지해야한다.

상속

💡 기본적으로 자바와 같은 사용법이다.

클래스를 하나 만들고

class IronMan {
  String name;
  int powerLevel

  IronMan(this.name , this.powerLevel);
  
   void shoot() {
    print('$name is shooting guns!');
  }
}

extends 를 통해 상속한다.

class IronManMK3 extends IronMan {
  int flyheight;

  IronManMK3(String name, int powerLevel,this.flyheight):super(name, powerLevel);

  
  void shoot() {
    print ('$name is shooting 리펄서!');
  }

  void fly () {
    print("$name can fly in $flyheight");
  }

}

interface

💡 **Dart는 인터페이스를 사용하지 않는다.

Dart의 클래스는 암시적으로 인터페이스 역할을 가능(따로 선언을 안해도 사용이 가능)**

자바와 달리 일반클래스 이기에 추상메소드를 못만들고

상수 강제가 아니며 생성자를 만들수있다.

class Interf {
  void sayName(){};
}

class Interf2 implements Interf {
  
  void sayName() {
    print("jang dong wan");
  };

}

다만 사용간 깨달은것이 Dart에서는 java에서에 interface의 기능들을 구현하지 못하는것으로 느껴져 사용안하는것이 좋을거같다 (추상 메소드 같은 기능들)
그렇기에 abstract 를 사용하는거 같다

abstract

💡 **추상 클래스 `abstract** class Interf{}` 처럼 클래스 앞에 abstract를 붙여준다

이런식으로 추상메소드를 선언했을경우

abstract class Abs {
  void fly(){
    print("!");
  }
  void sly();
}

추상 클래스 상속시 추상 메소드는 반드시 오버라이딩 해줘야한다.

class Abs2 extends Abs{

 
  void sly(){
		print("상속");
	}
}

mixin(다중 상속)

💡 extends 는 다중 상속이 불가능하다 자바에 경우 interface를 이용하여 추상 메소드도 다중 상속이 가능했지만 추상 메소드를 abstract만 만들수있기에 mixin을 이용하여 다중 상속을 가능하게 해준다. 💡 mixin 클래스이름 으로 선언하며
mixin Flyer {
  void fly() {
    print('fly');
  }
}

mixin Swimmer {
  void swim() {
    print('swim');
  }
}

with 을 이용하여 다중 상속 시킨다

class Seal extends Mammal with Swimmer, Walker {

}
profile
아기 개발자

0개의 댓글