Skip to content

Instantly share code, notes, and snippets.

@digitaljoni
Last active February 23, 2020 11:53
Show Gist options
  • Select an option

  • Save digitaljoni/498ad0d40c8800970f8dbf2b89f12771 to your computer and use it in GitHub Desktop.

Select an option

Save digitaljoni/498ad0d40c8800970f8dbf2b89f12771 to your computer and use it in GitHub Desktop.
OOP DBZ - Inheritance
class Saiyan {
Saiyan({this.name, this.power});
Saiyan.superForm(this.name) : power = 10000;
final String name;
final int power;
Saiyan operator +(Saiyan otherSaiyan) {
return Saiyan(
name: '$name${otherSaiyan.name}',
power: power + otherSaiyan.power,
);
}
Saiyan fight(Saiyan otherSaiyan) {
final Saiyan winner = (power > otherSaiyan.power) ? this : otherSaiyan;
return winner;
}
@override
String toString() => 'Saiyan $name Power Level : $power';
}
class SupaSaiyan extends Saiyan {
SupaSaiyan({name, power, this.level})
: super(name: name, power: power * level);
final int level;
@override
String toString() => 'Super Saiyan $level $name Power: $power';
}
void main() {
final Saiyan goku = Saiyan(name: 'Goku', power: 8000);
print(goku);
final Saiyan broly = Saiyan.superForm('Broly');
print(broly);
final SupaSaiyan ssjgoku = SupaSaiyan(name: 'Goku', power: 8000, level: 2);
final Saiyan newWinner = ssjgoku.fight(broly);
print('Winner is ${newWinner.name}');
print(newWinner);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment