抽象类与接口的区别

  抽象类的好处在于, 我们可以笼统地定义一个类而不需要一次想到这个类的所有细节, 这就提高了java语言面向对象的能力

  尽管抽象类和接口之间存在较大的相同点,甚至有时候还可以互换,但这样并不能弥补他们之间的差异之处。下面将从语法层次和设计层次两个方面对抽象类和接口进行阐述。

语法层次

      在语法层次,java语言对于抽象类和接口分别给出了不同的定义。下面已Demo类来说明他们之间的不同之处。

      

使用抽象类来实现:

  1. public abstract class Demo {  
  2.     abstract void method1();  
  3.       
  4.       
  5.     void method2(){  
  6.         //实现  
  7.     }  
  8. }  

       

使用接口来实现:
  1. interface Demo {  
  2.     void method1();  
  3.     void method2();  
  4. }  

       

 

  抽象类方式中,抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据(但是我们一般是不会在接口中使用成员数据),同时它所有的方法都必须是抽象的。在某种程度上来说,接口是抽象类的特殊化。

      对子类而言,它只能继承一个抽象类(这是java为了数据安全而考虑的),但是却可以实现多个接口。

完整版:

http://blog.csdn.net/chenssy/article/details/12858267

 

原文地址:https://www.cnblogs.com/zedosu/p/6514198.html