在软件中,接口同样是一种规范和标准,它们可以约束类的行为,
接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。
一个类通过继承接口的方式,从而来继承接口的抽象方法。如果一个类只由抽象方法和全局常量组成,
那么这种情况下不会将其定义为一个抽象类。只会定义为一个接口,所以接口严格的来讲属于一个特殊的类,
而这个类里面只有抽象方法和全局常量,就连构造方法也没有。
接口示例--
public interface Eateble {
public static final String MSG = "hello";//全局常量
public abstract void print();//抽象方法
}
二、接口的使用
由于接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:
1.接口不能被实例化,接口是比抽象类抽象程度更高的类型。
2.一个接口最好只定义一个方法,防止接口污染
3.接口不能有构造,抽象类可以有构造
4.接口是一种数据类型
5.接口可以多继承
6.接口中所有的字段都必须是公有的静态常量
7.接口所有方法都是公有的抽象方法
8.一个类实现某个接口的话,必须重写他的所有的抽象方法。
9.接口只是为实现它的类定义了规范,保证实现类的方法签名和接口中方法一致
10接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口;
接口和抽象类技术对比
01.抽象类中可以有普通方法,接口中不能
02.抽象类可以有构造,接口不能
03.抽象类中可以有普通字段,而接口中不行
04.抽象类不能实现多继承,接口可以
05.符合is a关系的选用抽象类,符合has a关系的选用接口
06.接口比抽象类抽象程度更高
----一个简单的示例
public abstract class Door { public abstract void oper(); public abstract void close(); }
public interface IDoorbell { public void Bell(); }
public interface ILock { public void Lock(); }
public class FDDoor extends Door implements IDoorbell,ILock{ @Override public void oper() { System.out.println("打开房门"); } @Override public void close() { System.out.println("关闭房门"); } @Override public void Lock() { System.out.println("按下房门门铃"); } @Override public void Bell() { System.out.println("锁上房屋门锁"); } }
测试类--
public class MyMain { public static void main(String[] args) { FDDoor door=new FDDoor(); door.oper(); door.Lock(); door.close(); door.Bell(); } }