下面代码中v1和v2调用了相同接口 move(),但输出结果不同,这体现了面向对象编程的( )特性。

class Vehicle {private:   string brand; public:   Vehicle(string b) : brand(b) {}    void setBrand(const string& b) { brand = b; }   string getBrand() const { return brand; }    virtual void move() const {      cout << brand << " is moving..." << endl;   }}; class Car : public Vehicle {private:   int seatCount; public:   Car(string b, int seats) : Vehicle(b), seatCount(seats) {}    void showInfo() const {      cout << "This car is a " << getBrand()         << " with " << seatCount << " seats." << endl;   }    void move() const override {      cout << getBrand() << " car is driving on the road!" << endl;   }}; class Bike : public Vehicle {public:   Bike(string b) : Vehicle(b) {}    void move() const override {      cout << getBrand() << " bike is cycling on the path!" << endl;   }}; int main() {   Vehicle* v1 = new Car("Toyota", 5);   Vehicle* v2 = new Bike("Giant");    v1->move();   v2->move();    delete v1;   delete v2;   return 0;}
填写答案