// 파라미터를 중괄호로 묶음
class Human {
String name;
int age;
Human({
this.name = '',
this.age = 0,
});
String toString() {
return 'Human {name: $name, age: $age}';
}
}
// 매개변수의 이름을 지정
void main() {
Human human = Human(name: 'ssh', age: 26);
print(human.name);
print(human.age);
}
// 함수를 호출할 때 콜론으로 매개변수의 이름을 지정한다. 전달받은 파라미터는 중괄호로 묶어 사용한다.
// 파라미터를 중괄호로 묶음
class Human {
String name;
int age;
Human({
required this.name,
required this.age,
});
String toString() {
return 'Human {name: $name, age: $age}';
}
}
// 매개변수의 이름을 지정
void main() {
Human human = Human(name: 'ssh', age: 26);
print(human.name);
print(human.age);
}
// 함수를 호출할 때 콜론으로 매개변수의 이름을 지정한다. 전달받은 파라미터는 중괄호로 묶어 사용한다.
Human 클래스
Student 클래스 Human 상속
Professor 클래스 Human 상속
main() - 메서드 main() 있는 클래스에 작성
class Human {
String name; // 이름
int age; // 나이
Human({
required this.name,
required this.age,
});
String toString() {
return 'Human{name: $name, age: $age}';
}
}
import 'human.dart';
class Student extends Human {
String stdNo; // 학번
String? subject; // 과목
Student({
required super.name,
required super.age,
required this.stdNo,
this.subject,
});
// name: messi / age: 35 / studentNo: S01 / subject: ‘’
String toString() {
return '학생정보 [ name: $name / age: $age / stdNo: $stdNo / subject: ${subject ?? ''} ]';
}
}
import 'human.dart';
class Professor extends Human {
String major; // 전공
Professor({
required super.name,
required super.age,
required this.major,
});
// name: peb / age: 52 / major: ‘foorboll’
String toString() {
return '교수정보 [ name: $name / age: $age / major: $major ]';
}
}
import 'package:basic/temp/professor.dart';
import 'package:basic/temp/student.dart';
import 'human.dart';
void main() {
// 이름, 나이, 학번 을 전달받아 ‘학생’객체를 생성
Human h1 = createStudent(name: 'messi', age: 35, stdNo: 'S01');
// 리턴받은 데이터로 - 학생정보 [ name: messi / age: 35 / studentNo: S01 / subject: ‘’ ] 형식을 출력
print(h1.toString());
// 이름, 나이, 전공 을 전달받아 ‘교수’객체를 생성
Human h2 = createProfessor(name: 'peb', age: 52, major: 'foorboll');
// 리턴받은 데이터로 - 교수정보 [ name: peb / age: 52 / major: ‘foorboll’ ] 형식을 출력
print(h2.toString());
}
// Human 타입을 리턴하는 ‘createStudent()’메서드
Human createStudent(
{required String name, required int age, required String stdNo}) {
return Student(name: name, age: age, stdNo: stdNo);
}
// Human 타입을 리턴하는 ‘createProfessor()’메서드
Human createProfessor(
{required String name, required int age, required String major}) {
return Professor(name: name, age: age, major: major);
}
자바에서 쓰던 생성자 구조와 달리 dart는 함수의 매개변수에 이름을 부여하는 Named Parameter를 사용할 수 있다.
Named Parameter는 함수 호출 시 매개변수를 직관적으로 전달할 수 있고 함수의 가독성과 확장성을 향상해 주는 장점이 있다.
dart에서는 required를 사용해 좀 더 직관적인 코딩이 가능하고 에러 또한 줄일 수 있으므로 자주 쓰면서 익숙해져야겠다.