JAVA接口
1.什么是接口
接口在java编程语言中是一种抽象的类型,是抽象方法的集合,接口主要用interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法。接口不是类,它只包含类要实现的方法。如果实现某个接口的类是抽象类,那么这个类要定义接口中所有的方法。接口无法被实例化,但是可以被实现,一个实现接口的类,必须实现接口内所描述的所有方法,否则必须声明为抽象类。
2.接口与类之间的关系
1.类与类之间:继承关系,只能是单继承,可以多层继承。
2.类与接口之间的关系:实现关系,可以单实现,也可以多实现。并且还继承一个类的
同时实现多个接口。
3.接口与接口之间的关系:继承关系,可以单继承,也可以多继承。
3.接口的特性
1.接口不可以被实例化
2.实现类必须实现接口的所有方法
3.实现类可以实现多个接口
4.接口中的变量都是静态常量
4.接口的优点
1.因为继承的实现原理决定了他只能被单继承,但是可以多重继承,但是如果出现某些内容在多个父类当中,这样修改起来相当麻烦。使用接口,可以做到立刻实现,立刻使用。不需要实现时,直接移除此接口就可以了。非常的方便。
2.父类引用指向子类对象
3.更容易实现搭建程序的框架
4.更容易实现切换
5.接口与抽象类之间的相同点与不同点
相同点:
1.都是代表系统的抽象层
2.都不能被实例化
3.都能包含抽象方法
不同点:
1.在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法,抽象类便于复用,接口便于代码维护
2.一个类只能继承一个直接的父类,但可以实现多个接口
6.接口代码实例
实例1
public class Security extends Door implements CatEye, Fireproofing {
@Override
public void openCat() {
System.out.println("打开猫眼");
}
@Override
public void closeCat() {
// TODO Auto-generated method stub
System.out.println("关闭猫眼");
}
@Override
public void fireproofing() {
// TODO Auto-generated method stub
}
@Override
public void noFireproofing() {
// TODO Auto-generated method stub
}
}
实例2
/**
* 计算机类
*
* @author Administrator
*
*/
public class CP {
private Cpu cpu;
public Cpu getCpu() {
return cpu;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
public EMS getEms() {
return ems;
}
public void setEms(EMS ems) {
this.ems = ems;
}
public HardDisk getHardDisk() {
return hardDisk;
}
public void setHardDisk(HardDisk hardDisk) {
this.hardDisk = hardDisk;
}
private EMS ems;
private HardDisk hardDisk;
public CP(Cpu cpu, EMS ems, HardDisk hardDisk) {
super();
this.cpu = cpu;
this.ems = ems;
this.hardDisk = hardDisk;
}
public CP() {
super();
// TODO Auto-generated constructor stub
}
public void show() {
System.out.println("电脑的cpu是:" + getCpu().getCpuBrand() + "主频是:" + getCpu().getFrequency());
System.out.println("硬盘容量是:" + getHardDisk().getHardDisk());
System.out.println("内存的容量是:" + getEms().getEms());
}
}