1.虚方法必须有方法体,派生类可以重写虚方法,也可以不重写虚方法(即派生类中可以重写和隐藏)客户端代码可以通过父类的签名实现对子类的引用,这就是面向对象多态的表现。
抽象方法没有方法体,派生类必须覆盖抽象方法,即抽象方法必须在派生类中重写。
2.抽象方法只能在抽象类中声明,即如果类中包含抽象方法,那么该类也是抽象的。抽象类无法实例化,派生类需继承后再实现其所有的抽象方法。
当你非常的明确一个方法要实现什么功能,并且知道怎么实现功能的时候就用虚方法。
当你知道方法要实现的功能,但对怎么实现不清楚的时候,用abstract。