日期:2014-05-20  浏览次数:20710 次

什么是抽像类!抽像类和非抽像类有什么区别!抽像类相对于非抽像类有什么优点!
抽像类和非抽像类有什么区别!抽像类相对于非抽像类有什么优点!如果可以的话!还想再问一下!什么接口!可能理论了!因为平时用不到!再者看msdn看不懂!所以就想问一下!打发一下好奇心!谢谢!

------解决方案--------------------
抽像类不能定义该类的对象,但可以定义继承他的非抽象类对象。
非抽像类可以定义该类的对象。

抽象类 顾名思义就是抽象的类,优点就是抽象,利于系统的扩展和维护。因为jvm可以在运行时动态决定该使用哪一个继承这个抽象类的具体类。

比如我有个抽象类A,定义了通用的数据库操作(抽象的操作),
类B(用于MySQL)继承类A并且实现了类A的数据库操作方法(用于MySQL的具体的操作)
类C(用于Oracle)也继承类A并且实现了类A的数据库操作方法(用于Oracle的具体的操作)
现在业务逻模块需要对数据库进行操作,我们在业务逻辑操作的时候用抽象类A,而不是具体的类B或C
这样业务逻辑就做到了与具体数据库产品无关。
但我们现在用的数据库是MySQL的时候,我们只需将类B传入业务逻辑模块中。JVM自己会判断该对数据库的操作是哪一数据库产品。
当我们现在环境变了,是用Oracle的时候,我们也只需将类C传入业务逻辑模块中。其中业务逻辑并不会被修改。

当然 接口也有这样的功能,而且接口比抽象类更抽象。抽象类里面还可以定义具体方法,只要子类不覆盖这个方法,那么使用的还是父类的方法逻辑。而接口里面只有方法的声明,具体的方法逻辑由实现接口的类来决定。

如果要设计出优秀的系统,必须要学会使用好这些东西。OOD经常提起的就是 针对抽象和接口编程 

系统需要高内聚 低耦合 易于扩展 和 维护 这些都是良好设计的要求。建议你去看下 设计模式 就知道 抽象类和接口的作用了。

以上是我的经验之谈 有什么不对之处 还请 CSDN 网友们提出 TKS