我已经用Java编程近两年了,但我现在更多地转向web编程,从而转向Javascript,或者在我的情况下转向Dart.对于我正在进行的一个项目,我希望有抽象基类,就像Java中一样.我一直在网上搜索,但在Dart的抽象类上找不到任何东西.我只找到了this article from the dart lang site on mixins个,在一个例子中,它对一个类使用了abstract关键字.但我真的不明白混合原理.
Could somebody translate this easy Java abstract base class example to Dart,这样我就可以对在DART中如何做有一个基本的了解?该示例涵盖abstract base class(当然,使用抽象方法)、polymorphism、casting objects、method overloading(在本例中是构造函数)、calling super-constructor和calling overloaded own constructor.
// Abstract base class
abstract class Vehicle {
protected final int maxSpeed;
protected int speed;
Vehicle() {
this(0);
}
Vehicle(int maxSpeed) {
this.maxSpeed = maxSpeed;
speed = 0;
}
public int getMaxSpeed() {
return maxSpeed;
}
abstract void accelerate();
abstract void brake();
}
// Subclass of Vehicle, the abstract baseclass
class Car extends Vehicle {
public final int doors;
Car(int maxSpeed, int doors) {
super(maxSpeed);
this.doors = doors;
}
@Override
void accelerate() {
if (speed>maxSpeed) {
speed = maxSpeed;
return;
}
speed += 2;
}
@Override
void brake() {
if (speed - 2 < 0) {
speed = 0;
return;
}
this.speed -= 2;
}
}
那么这个简单的实现看起来会是什么样子呢?
// Polymorphism
Vehicle car = new Car(180, 4);
// Casting
int doors = ((Car)car).doors;
// Calling abstract method
car.accelerate();