this is a test about virtual class and virtual function