Java
只支持单一继承,不支持多重继承,即一个类只能继承一个父类,这一缺陷可以通过接口来弥补。
Java
允许一个类实现多个接口,这样使程序更加灵活、易扩展。
定义接口
访问符
interface
接口名
[extends
父接口
1
,父接口
2…]
{
//
接口体
}
1.一个接口可以继承多个父接口,但接口只能继承接口,不能继承类。
2.
在接口体里可以包含静态常量、抽象方法、内部类、内部接口以及枚举的定义, 从
java8
版本开始允许接口中定义默认方法、类方法;
3.
与类的默认访问符不同,接口体内定义的常量、方法等都默认为
public
,可以 省略
public
关键字,即当接口中定义的常量或方法不写
public
,其访问权限 依然是
public
。
4.接口里定义的成员变量只能是常量
5.
在接口里定义的普通方法只能是
public
的抽象方法,即没有方法体,系统会自 动为其添加
public abstract
,因为接口总是要被其他类实现的,所以方法是公 共的。
6.
接口中定义默认方法,需要使用
default
修饰,可以有方法体和内容
7.
在接口中定义类方法,需要使用
static
修饰,通过接口的名称调用类方法
8.接口不能直接实例化,但可以使用接口声明引用类型的变量,该变量可以引用 到接口的实现类的实例对象上。接口的主要用途就是被实现类实现,一个类 可以实现一个或多个接口,接口之间用逗号进行间隔
9.[
访问符
] class
类名
implements
接口
1[
,接口
2.
。。
]{
实体
}
10.一个类在实现一个或多个接口是,这个类必须完成实现这些接口中定义的所 有抽象方法,否则该类必须定义为抽象类
11.一个类实现某个接口时,该类将会获得接口中定义的常量、方法等,因此可 以将实现接口理解为一种特殊的继承,相当于实现类继承了一个彻底抽象的 类
定义接口:
public
interface
Myinterface {
//接口里定义的曾远变量只能是常量
int
MAX_VALU
= 50;
//接口里定义的普通方法只能是public的抽象方法
void
delMsg
();
void
addMsg(String
msg
);
//在接口中定义默认方法,需要使用default修饰
default
void
print(String…
msgs
){
for
(String
msg
:
msgs
){
System.
out
.println(
msg
);
}
}
//在接口中定义类方法,需要使用
ststic
修饰
static
String ststicTest(){
return
“在接口里的类方法”
;
}
实现接口:
package
p2;
public
class
ImInterfaceDemo
implements
Myinterface{
//定义一个字符串数组,长度是接口中定义的常量MAX—SIZE
private
String[]
msgs
=
new
String[Myinterface.
MAX_VALU
];
//记录消息个数
private
int
num
= 0;
//实现接口中的方法
public
void
delMsg() {
if
(
num
<= 0 ){
System.
out
.println(
“消息队列以空,删除失败!”
);
}
else
{
//删除消息,
num
数量减
1
msgs
[–
num
]=
null
;
}
}
//实现接口中的方法
public
void
addMsg(String
msg
) {
if
(
num
>=Myinterface.
MAX_VALU
){
System.
out
.println(
“消息队列已满,num数量失败!”
);
}
else
{
//将消息添加到字符串数组,
num
数量加
1
msgs
[
num
++] =
msg
;
}
}
//定义一个类实现自己的方法
public
void
showMsg(){
//输出消息队列中德信息
for
(
int
i
= 0;
i
<
num
;
i
++){
System.
out
.println(
msgs
[
i
]);
}
}
public
static
void
main(String[]
args
) {
//实例化一个接口实现类的对象,并将其赋值给一个接口变量引用
Myinterface
mi
=
new
ImInterfaceDemo();
//调用接口的默认方法,默认方法必须通过实例对象来调用
mi
.print(
“sda”
,
“dasd”
,
“da”
);
//调用接口的类方法,直接通过“接口名.类方法()”来调用
System.
out
.println(Myinterface.
ststicTest
());
System.
out
.println(
“………..”
);
//实例化接口实现类
ImInterfaceDemo
ifd
=
new
ImInterfaceDemo();
//添加信息
ifd
.addMsg(
“dasdsd”
);
ifd
.addMsg(
“dasdsd”
);
ifd
.addMsg(
“dasdsd”
);
ifd
.addMsg(
“dasdsd”
);
//输出信息
ifd
.showMsg();
System.
out
.println(
“………….”
);
//删除一个信息
ifd
.delMsg();
System.
out
.println(
“删除一个数据后,剩下的信息是:”
);
ifd
.showMsg();
}
}