클래스를 하나 만들고
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");
}
}
Dart의 클래스는 암시적으로 인터페이스 역할을 가능(따로 선언을 안해도 사용이 가능)**
자바와 달리 일반클래스 이기에 추상메소드를 못만들고
상수 강제가 아니며 생성자를 만들수있다.
class Interf {
void sayName(){};
}
class Interf2 implements Interf {
void sayName() {
print("jang dong wan");
};
}
다만 사용간 깨달은것이 Dart에서는 java에서에 interface의 기능들을 구현하지 못하는것으로 느껴져 사용안하는것이 좋을거같다 (추상 메소드 같은 기능들)
그렇기에 abstract 를 사용하는거 같다
이런식으로 추상메소드를 선언했을경우
abstract class Abs {
void fly(){
print("!");
}
void sly();
}
추상 클래스 상속시 추상 메소드는 반드시 오버라이딩 해줘야한다.
class Abs2 extends Abs{
void sly(){
print("상속");
}
}
mixin Flyer {
void fly() {
print('fly');
}
}
mixin Swimmer {
void swim() {
print('swim');
}
}
with 을 이용하여 다중 상속 시킨다
class Seal extends Mammal with Swimmer, Walker {
}