下面代码中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;}