来自《你不知道的javascript》的学习
《==============================================================》
类意味着复制。传统的类被实例化时,它的行为会被复制到实例中。类被继承时,行为也会被复制到子类中。
类的继承:
class Vehicle{
engines = 1
ignition(){
output("Turning on my engine.");
}
drive(){
ignition();
output("Steering and moving forward!");
}
}
class Car inherits Vehicle{
wheels = 4
drive(){
inherited:drive();
output("Rolling on all",wheels,"wheels!");
}
}
class SpeedBoat inherits Vehicle{
engines = 2;
ignition(){
output("Turning on my",engines,"engines.");
}
pilot(){
inherited:drive()
output("Speeding through the water with ease!")
}
}
在pilot()中通过相对多态引用了(继承来的)Vehicle中的drive()。但是那个drive()方法直接通过名字(而不是相对引用)引用了ignition()方法。那么语言引擎会使用哪个ignition()呢,Vehicle的还是SpeedBoat的?实际上他会使用SpeedBoat的 ignition()。如果你直接实例化了Vehicle类然后直接调用它的drive(),那语言引擎就好使用Vehicle中的ignition()方法。总之,ignition()方法定义的多态性取决于你是在哪个类的实例中引用他。
本文探讨了JavaScript中的类和继承机制,特别是如何通过继承复制行为,并展示了不同类中方法调用时的多态性表现。
268

被折叠的 条评论
为什么被折叠?



