java基础之--接口
正文
JAVA是只支持单继承的,但现实中存在很多多重继承现象,比如“人是一种可爱的生物”,人可以从“可爱的生物”这个类继承,“人是一种可以思考的动物”,人又从“会思考的动物”这个类继承。这样人可以分别从 “可爱的生物”、“会思考的动物” 这两个类继承,但由于JAVA只支持单继承,因此人不可以同时继承这两个类。为了实现这种现象,就出现了接口,接口可以实现多继承。
什么是接口?
- 接口是抽象方法和常量值的定义的集合
- 接口实际上是特殊的抽象类,它只包含常量和方法的定义,而没有变量和方法的实现
接口举例
package com.mlin;
interface SoulPer {
public static final int i = 0;//常量的定义
//方法的定义
public void call();
public void run();
}
接口的特性
- 接口可以多重实现
- 接口可以继承其他接口,并添加属性和方法
- 接口中声明的属性默认是
public static final
的,并且也只能是public static final
的 - 接口中定义的方法为抽象方法,只能是
public
的。
在接口中定义常量,有时候是这样写int i = 0;
,那是因为接口中声明的属性默认是public static final
的,public static final
可省略不写。同理,接口中声明的方法都是抽象的,所以可以省略abstract
关键字,写成public void call();
注意:在接口里面声明的抽象方法默认是“public(公共的)”的,也只能是“public(公共的)”,之所以要这样声明是为了修正C++里面多重继承的时候容易出现问题的地方,C++的多继承容易出现问题,问题在于多继承的多个父类之间如果他们有相同的成员变量的时候,这个引用起来会相当地麻烦,并且运行的时候会产生各种各样的问题。JAVA为了修正这个问题,把接口里面所有的成员变量全都改成static final,成员变量是static类型,那么这个成员变量就是属于整个类里面的,而不是专属于某个对象。对于多重继承来说,在一个子类对象里面实际上包含有多个父类对象,而对于单继承来说,子类对象里面就只有一个父类对象。多继承子类对象就有多个父类对象,而这些父类对象之间可能又会存在有重复的成员变量,这就非常容易出现问题,因此在JAVA里面避免了这种问题的出现,采用了接口这种方式来实现多继承。作为接口来说,一个类可以从接口继承,接口里面的成员变量不专属于某个对象,都是静态的成员变量,是属于整个类的,因此一个类去实现多个接口也是无所谓的,不会存在对象之间互相冲突的问题。实现多个接口,也就实现了多重继承,而且又避免了多重继承容易出现问题的地方,这就是用接口实现多重继承的好处。
总结
接口和接口之间可以相互继承,类和类之间可以相互继承,类和接口之间,只能是类来实现接口
原创作者:凌小样
作品链接:https://www.jianshu.com/p/a4820eefa075
【原创不易,转载请注明出处,感谢理解】
一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友