Created
May 22, 2022 03:56
-
-
Save ordem-yoo/7ee19932a68e3b9b98bded661b0c4d6f to your computer and use it in GitHub Desktop.
99. Polymorphism in Action
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void main() { | |
ElectricCar myTesla = ElectricCar(); | |
myTesla.drive(); | |
myTesla.recharge(); | |
print(myTesla.batteryLevel); | |
LevitatingCar myMagLev = LevitatingCar(); | |
myMagLev.drive(); | |
SelfDrivingCar myWaymo = SelfDrivingCar('1 Hacker Way'); | |
myWaymo.drive(); | |
} | |
class Car{ | |
int nubmerOfSeat = 5; | |
void drive(){ | |
print('wheels turn.'); | |
} | |
} | |
class ElectricCar extends Car{ | |
// Car클래스에서 상속을 받으므로 drive함수를 다시 쓰지 않아도 된다. | |
int batteryLevel = 100; | |
void recharge(){ | |
batteryLevel = 100; | |
} | |
} | |
class LevitatingCar extends Car{ | |
@override | |
// @override를 통해서 함수를 그대로 쓰되, 내용을 바꿀 수 있다. | |
void drive(){ | |
print('glide forward'); | |
} | |
} | |
class SelfDrivingCar extends Car{ | |
String destination = ''; | |
SelfDrivingCar(String userSetDestination){ | |
destination = userSetDestination; | |
} | |
@override | |
void drive(){ | |
super.drive(); | |
// 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수입니다. | |
print('sterring towrad $destination'); | |
} | |
// polymorphism = 다형성 | |
// 부모로부터 물려받을 수 있지만 @override를 통해서 향상시킬 수 있습니다. | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment