关于抽象类和接口的区别,在线等
我在网上看了大量的关于抽象类和接口的区别,给我感觉是,抽象类的抽象方法就相当于接口的方法,那么也就是接口能做的事抽象类都能做,如果真是这样,我就很纳闷了,接口不是很多余吗?可是我看很多项目,我是抽象类和接口一起使用,所以我不知道是我理解有误还是我看到的项目不合理?谢谢高手帮助。
注:希望大家简单地给我一些抽象类和接口区别的网址。我主是在网上看了才这产生了这样的理解。
------解决方案--------------------接口比抽象类更抽象,一个类只能继承一个类,但可以实现多个接口
------解决方案--------------------
从设计的角度看,继承抽象类说明抽象类和子类的关系更紧密。比如“鸟”和“麻雀”,“形状”和“圆”,从根本上来说,后者“is a”前者,比如圆是一个形状。形状是圆的抽象本质,麻雀和鸟的关系也是如此。你看见一只麻雀在飞,你说这是一只鸟在飞也是对的。而接口不然,比如“可数的”和“花生米”,“可比较的”和“货币”,这是一种后者“can do”前者的关系。显然可数不是花生米的本质,只是它具有的一个特性。如果我们使用抽象类“可数的”,让“花生米”、“石块”、“纸张”都从它继承,不合理的地方是显而易见的,这些东西本身风马牛不相及,将它们归为一类仅仅因为它们都可数,这是不好的。可数的不表示花生米的本质,你不能说今天我吃了不少“可数的”。花生米的本质是“食物”。
这从本质上说明了为什么一个类可以实现多个接口(它具有多个性质),而不能从多个基类继承(基类反映了事物的抽象本质)的原因。
------解决方案--------------------