
//추상클래스를 사용하여 IronMan Class에 method를 구현하기
abstract class IronMan {
var name;
var suitColor;
IronMan(this.name, this.suitColor);
// This is an abstract method. It must be implemented by subclasses.
void fly();
// This is an abstract method. It must be implemented by subclasses.
void shootLasers();
// This is an abstract method. It must be implemented by subclasses.
void withstandDamage();
}
//@override 구문을 사용하여 abstract method 구현
class Mark50 extends IronMan {
Mark50(String name, String suitColor):super(name, suitColor);
void fly(){
print('$name is flying');
}
void shootLasers(){
print('$name shoot Laser!');
}
void withstandDamage(){
print('$name is huge Damage!');
}
}
void main(){
var mark50 = Mark50('Mark50', 'red');
mark50.fly();
mark50.shootLasers();
mark50.withstandDamage();
}
mixin은 extends나 with를 사용할 수 없다.
그렇기 때문에 mixin class도 마찬가지로 사용 불가능하다.
클래스는 on 키워드를 사용 할 수 없다.
그렇기때문에 mixin class도 on 키워드를
사용할 수 없다.
mixin Flyable on Animal {
void fly() {
print('I am flying!');
}
}
class Animal {
String name;
Animal(this.name);
}
class Bird extends Animal with Flyable {
// Bird는 Animal의 모든 속성과 메소드를 가지며,
// Flyable mixin에서 제공하는 fly() 메소드도 가지고 있다.
Bird(String name) : super(name);
}
void main() {
var bird = Bird('Bird'); // "Bird"라는 이름을 가진 Bird 객체 생성
bird.fly(); // "I am flying!"을 출력합니다.
}
void main() {
SuperHero superHero = SuperHero();
Hero hero = SuperHero();
Moveable moveable = SuperHero();
Drawable drawable = SuperHero();
}
mixin Moveable {
int i = 0;
void move() {
//
}
}
mixin Drawable {
void draw() {}
}
class Hero {}
class SuperHero extends Hero with Moveable, Drawable {}