extends
关键字实现的属性
和 方法
@override
注解来重写父类的方法class Animal {
void speak() {
print("The animal makes a sound");
}
}
class Dog extends Animal {
@override
void speak() {
print("Bark!");
}
}
void main() {
var dog = Dog();
dog.speak(); // 输出: Bark!
}
运行结果:
Animal myAnimal = Dog();
myAnimal.speak(); // 输出: Bark!
原型链
实现继承class Animal {
speak() {
console.log("The animal makes a sound");
}
}
class Dog extends Animal {
speak() {
console.log("Bark!");
}
}
const dog = new Dog();
dog.speak(); // 输出: Bark!
// 多态的体现
const myAnimal = new Dog();
myAnimal.speak(); // 输出: Bark!
继承语法:
extends
关键字来实现继承@override
注解来明确表示方法重写多态实现:
类型系统:
继承和多态使得代码更具可重用性和灵活性,同时也支持更好的封装和抽象。
如上是 Dart 和 JavaScript 中继承和多态的主要差异,接下来将介绍 Dart 中的接口和混入,在 Dart 中,接口(Interface)和混入(Mixin)是两个重要的概念,它们在提供代码的可重用性和灵活性方面起着关键作用。
这两个概念在 Dart 中的实现方式与其他语言有所不同。
class Car {
void drive() {
print("Car is driving");
}
}
class ElectricCar implements Car {
@override
void drive() {
print("Electric Car is driving silently");
}
}
void main() {
var myCar = ElectricCar();
myCar.drive(); // 输出: Electric Car is driving silently
}
运行结果:
mixin Electric {
void recharge() {
print("Recharging the electric vehicle");
}
}
class Car {
void drive() {
print("Car is driving");
}
}
class ElectricCar extends Car with Electric {
@override
void drive() {
super.drive();
recharge();
}
}
void main() {
var myECar = ElectricCar();
myECar.drive(); // 输出: Car is driving
// Recharging the electric vehicle
}
运行结果:
接口实现:
混入使用:
with
关键字可以将一个或多个混入应用到一个类上灵活性和重用性:
这些概念使 Dart 在处理多重继承和代码重用时非常灵活和强大
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。