Java中接口(interface)与抽象类(abstract class)的区别
2017-07-31 10:40
666 查看
接口与抽象类是支持抽象类定义的两种机制,他们既有不同点也有共同点,下面我们分开来讨论一下:
1.不同点
(1)接口是公开的,里面不能有私有变量或私有方法;而抽象类中可以有私有的变量和方法(注:如果是抽象方法,必须是public或者protected)。
(2)接口中的方法必须是抽象方法;而抽象类中不要求一定有抽象方法。
(3)在继承时,一个类可以继承多个接口;而一个类却只能继承一个抽象类。
(4)接口中不允许声明变量;而抽象类可以声明变量;
(5)接口中只有定义,不能有接口的实现;而抽象类可以有接口的实现。
(6)实现接口的关键字是implements,继承抽象类的关键字是extends。
2.相同点
(1)都不能被实例化。
(2)接口的实现类或抽象类的子类都只有实现了接口或者抽象类中 的方法后才能被实例化。
![](https://img-blog.csdn.net/20170731105910732?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHpiNjQxOTczMTQy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170731105946998?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHpiNjQxOTczMTQy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注;在JDK不断的更新之下,会出现不能理解的一幕,接口中可以声明非抽象方法。其实,它默认还是抽象类,需要在继承它的子类中去重写这个方法。
1.不同点
(1)接口是公开的,里面不能有私有变量或私有方法;而抽象类中可以有私有的变量和方法(注:如果是抽象方法,必须是public或者protected)。
(2)接口中的方法必须是抽象方法;而抽象类中不要求一定有抽象方法。
(3)在继承时,一个类可以继承多个接口;而一个类却只能继承一个抽象类。
(4)接口中不允许声明变量;而抽象类可以声明变量;
(5)接口中只有定义,不能有接口的实现;而抽象类可以有接口的实现。
(6)实现接口的关键字是implements,继承抽象类的关键字是extends。
2.相同点
(1)都不能被实例化。
(2)接口的实现类或抽象类的子类都只有实现了接口或者抽象类中 的方法后才能被实例化。
注;在JDK不断的更新之下,会出现不能理解的一幕,接口中可以声明非抽象方法。其实,它默认还是抽象类,需要在继承它的子类中去重写这个方法。
相关文章推荐
- Java 深入学习(3) —— 抽象类(Abstract Class) 与 接口(Interface)的区别
- Java 接口(interface)和抽象类(abstract class)区别
- Java中interface接口与abstract class抽象类的区别
- 详细解析Java中抽象类和接口的区别 abstract class和interface
- 详细解析Java中抽象类和接口的区别 abstract class和interface(转)
- Java中抽象类(Abstract Class)与接口(Interface)的区别?
- 详细解析Java中抽象类和接口的区别 abstract class和interface
- Java 接口(interface)和抽象类(abstract class)区别
- 详细解析Java中抽象类和接口的区别 abstract class和interface
- java中abstract class 与 interface (抽象类与接口)的区别
- Java:关于接口(interface)详解;接口与抽象类的区别
- [Java] 接口(Interface)与 抽象类 (Abstract)使用规则和区别
- java中抽象类(abstract class)和接口(interface)
- 黑马程序员-抽象类abstract class 与 接口interface 的区别
- Java - 抽象类(abstract class)和接口(interface)有什么异同?
- C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较
- 【JAVA学习】接口interface和抽象类abstract class的比较
- Java接口Interface与抽象类Abstract Class
- 接口(interface) 与 抽象类(abstract class) 的区别
- (2.1.15)抽象类abstract class和接口interface的区别