接口与抽象类的区别

     在学习java语言中,我们通常用到接口。都知道接口定义是一组抽象的没有实现规则。那抽象类也有相似之处。那么它们到底有什么不同呢?一下是我对这些东西的小感悟与终结......不足之处希望大家多多指教。

  抽象类与接口的区别

  1.抽象类在java中表示的是一种继承关系,一个类只能继承一个类。而接口却不同,一个类可以实现多个接口。

  2.在抽象类中,抽象类可以有自己的数据成员,也可以有实例方法。含有抽象方法的类必定是抽象类。而在接口中,只能够有静态的不能修改的数据成员(也就必须是static final的,不过一般情况下我们不这样定义数据成员),并且接口中的所有方法都是抽象的。

  3.抽象类与接口的设计理念不同。抽象类所表示:"is-a"的关系,而接口则表示:"like-a"的关系。

  4.实现抽象类与接口都必须实现它们中的所有方法。抽象类中可以有实例方法,而接口中则没有。

  5.接口中定义的变量默认是public static final 类型的,且必须给予它初始值,在所有实现本接口的类中,不能重定义,也不能改变此变量的值。

  6.抽象类中的变量默认是friendly类型的,其值可以重新定义,也可以重新赋值。

  7.抽象类继承了却没有实现就只能继续抽象。

 

以上是我对抽象类与接口两者关系的了解。希望大家评论指教....

 

其实抽象类设计为复用,接口设计来外开...

 

原文地址:https://www.cnblogs.com/huzi007/p/2698176.html