额,今天突然灵光一现,想到一个很好解释面向对象里多态与抽象类的小例子。不知是否恰当,欢迎大牛指教。
一天,一个人吃着一个苹果对你说:“他正在吃水果。”你可能一点儿也不觉得奇怪。因为苹果的确就是一种水果,他的话没有逻辑错误。这就是面向对象的多态的一个表现,可以用父类来表示子类。
但有一天,这个人吃着一个不明物体,你问他:“hey,哥们,吃的啥呢?”于是他又回答你:“我吃的水果呢。”你又问:“这啥水果啊,我咋没见过。”他回答说:“这不是啥水果,这就是水果啊。”你肯定会觉得这人有毛病吧。没错,“水果”就是一个抽象类。你不能说自己吃的水果就是“水果”。抽象类是不能被实例化的。