接口
在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public、static和final属性。
接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
接口代码
package 接口;
public class TheftproofDoor extends Door implements Lock, MenLing{
@Override
public void lockUP() {
// TODO Auto-generated method stub
System.out.println("插进钥匙,向左旋转三圈,锁上了,摆出钥匙");
}
@Override
public void openLock() {
// TODO Auto-generated method stub
System.out.println("插进钥匙,向右旋转三圈,锁开了,摆出钥匙");
}
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("门开了");
}
@Override
public void close() {
// TODO Auto-generated method stub
System.out.println("门关了");
}
@Override
public void takePictrue() {
// TODO Auto-generated method stub
System.out.println("玲。。。。咔嚓 。。。照片以存储");
}
}
package 接口;
public abstract class Door {
public abstract void open();
public abstract void close();
}
package 接口;
public interface Lock {
void lockUP();//上锁
void openLock();//开锁
}
package 接口;
public interface MenLing {
void takePictrue();
}
package 接口;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
TheftproofDoor td=new TheftproofDoor();
td.close();
td.lockUP();
td.takePictrue();
td.openLock();
td.open();
}
}
以上代码运行结果:
门关了
插进钥匙,向左旋转三圈,锁上了,摆出钥匙
玲。。。。咔嚓 。。。照片以存储
插进钥匙,向右旋转三圈,锁开了,摆出钥匙
门开了