Skip to content

Instantly share code, notes, and snippets.

@junddao
Last active March 10, 2023 04:46
Show Gist options
  • Save junddao/e6b3fb66a580bff4471b7fd13440f213 to your computer and use it in GitHub Desktop.
Save junddao/e6b3fb66a580bff4471b7fd13440f213 to your computer and use it in GitHub Desktop.
inheritance-problem 

inheritance-problem 

Created with <3 with dartpad.dev.

// 1. User는 Name(String)을 가진다.
// 2. Teacher는 id(int)를 가진다.
// 3. Teacher는 User이다.
// 4. Student는 gpa(String or double)학점을 가진다.
// 5. Student는 User이다.
// 6. Member는 email을 가진다.
// 7. Member는 Teacher와 Student를 가진다.
abstract class User{
late String name;
}
class Teacher extends User{
Teacher({required this.id, required String name}){
super.name = name;
}
final int id;
}
class Student<T> extends User{
T? gpa;
Student({required String name, required this.gpa}) {
super.name = name;
}
}
class Member<T extends User>{
Member({
required this.email,
required this.user,
});
T user;
String email;
}
// Q2. -- use inheritance with generic ---
void main() {
Member<Teacher> member1 = Member<Teacher>(
email: 'a@a.com',
user: Teacher(id: 1, name: '선생1'),
);
Member<Student> member2 = Member<Student>(
email: 'b@b.com',
user: Student(gpa: 'B', name: '학생1'),
);
Member<Student> member3 = Member<Student>(
email: 'c@c.com',
user: Student(gpa: 80, name: '학생2'),
);
print('${member1.user.name}, ${member1.user.id}');
print('${member2.user.name}, ${member2.user.gpa ?? 'GD'}');
print('${member3.user.name}, ${member3.user.gpa ?? 'GD'}');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment