플로터(Flutter)/기본
(코딩쉐프) 조금 매운 맛 1강 (상속)
enjoyPG
2023. 1. 13. 14:48
상속 문법(생성자에 유의해서 보길)
class Person{
String? name;
int? money;
Person(this.name, this.money){}
void status(){
print("이름: $name , 골드: $money");
}
}
class Hero extends Person{
int? hp;
int? mp;
Hero(this.hp, this.mp, super.name, super.money);
//생성자에서 중괄호 안에 내용이 없을 경우 생략해도 됨
//단 생략할 경우 위 예시처럼 세미콜론 필수
@override
void status(){
print("이름: $name , 골드: $money");
print("hp: $hp , gold: $mp");
}
}
class Magician extends Hero{
String? skill;
int? damage;
Magician(this.skill, this.damage, super.hp, super.mp, super.name, super.money){}
void magic(){
print("Magic: $skill ,Dagmage: $damage!!");
}
}
void main(){
Person p1 = Person("Tim", 100);
p1.status();
Hero h1 = Hero(1,2,"Tim",100);
h1.status();
Magician m1 = Magician("Meteor", 999, 10,30,"Harry", 999);
m1.status();
m1.magic();
m1.magic();
m1.magic();
m1.magic();
}
아래는 옛날 방식
class DialPhone{
int? year;
DialPhone(){
print('이 전화기는 다이얼을 돌려서 전화를 겁니다.');
}
void whenCame(){
print("1889년 발명");
}
}
class ButtonPhone extends DialPhone{
ButtonPhone(){
print("이 전화기는 버튼을 눌러서 전화를 겁니다.");
}
@override
void whenCame(){
print("1963년 발명");
}
}
class SmartPhone extends ButtonPhone{
String? manufacturer;
String? model;
SmartPhone(String manufacturer, String model, int year){
this.manufacturer = manufacturer;
this.model = model;
this.year = year;
print("이 전화기는 터치를 해서 전화를 겁니다.");
}
@override
void whenCame(){
print("1993년 처음 등장");
}
}
void main(){
SmartPhone s1 = SmartPhone("제조사:삼성", "모델명:겔럭시 S20", 2020);
print(s1.manufacturer.toString() + s1.model.toString() + s1.year.toString());
s1.whenCame();
}