一:概念
接口是功能的集合。同样可以看做一种数据类型,是比抽象类更为抽象的“类”。
接口描述应该具备的方法,并没有具体的实现。具体实现由接口的实现类(相当于接口的子类来完成)。
什么是接口?
一个普通方法都没有,全是抽象方法!这就是接口
定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。
接口的关键字:
interface
接口定义格式:
public interface 接口名 {
抽象方法1;
抽象方法2;
抽象方法3;
}
注意:
在接口中默认方法都是抽象的(abstract),不管是否使用public abstract,都一样
接口不可以直接创建对象
子类必须重写接口中所有的抽象方法,子类才可以实例化,否则子类还是一个抽象类
类实现接口:
类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。
类实现接口格式:
public class 类 implements 接口 {
重写接口中方法
}
public interface Demo { ///定义一个名称为Demo的接口。
public abstract void show1();
public abstract void show2();
}
接口的好处弥补了java中单继承的缺陷,接口可以多实现:
public interface Fu1
{
void show1();
}
public interface Fu2
{
void show2();
}
public class Zi implements Fu1,Fu2// 多实现。同时实现多个接口。
{
public void show1(){}
public void show2(){}
}
有继承关系的就先继承然后在连接类接口
接口与抽象的相同点:
都不能直接实例化对象
都可以包含抽象方法,但是子类必须重写这些抽象方法
区别:
抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;
一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
抽象类里面不一定只有抽象方法,也可以有普通方法,但是接口中一定只有抽象方法,没有普通方法!