接口的概念
接口,在java中是一个抽象类,是抽象方法的集合,接口通常以interface来声明,接口里面不能包括普通的方法,里面通常是抽象的方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
接口的定义
[修饰符] interface 接口名称 [extends 其他的类名] {
// 声明变量
// 抽象方法
}
修饰符可以是public也可以省略,接口名应该要和类名相同,一个接口之间可以有多个父接口,但是接口只能继承接口,不能继承类。
由于接口定义的是一种规范,所以在接口里面不可以包含构造器和初始化块定义。接口里面只可以包含成员变量(静态),抽象方法,内部类。
定义一个接口
interface A{//定义一个接口
public static final String MSG = "hello";//全局常量
public void print();//抽象方法
}
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法.
接口的使用
因为接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:(1)接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口;
(2)接口的子类(如果不是抽象类),那么必须要覆写接口中的全部抽象方法;
使用接口时,我们主要的用途是定义变量,调用接口中定义的变量,和被其他类发现。
package abc;
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat() {
System.out.println("吃苹果。。。");
}
}
public class Client {
public static void main(String[] args) {
Fruit f = new Apple();
f.eat();
}
}
接口的继承
一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。
interface interfaceA
{
int PROP_A = 5;
void testA();
}
interface interfaceB
{
int PROP_B = 6;
void testB();
}
interface interfaceC extends interfaceA , interfaceB
{
int PROP_C = 7;
void testC();
}
public class InterfaceExtendsTest
{
public static void main(String[] args)
{
System.out.println(interface.PROP_A);
System.out.println(interface.PROP_B);
System.out.println(interface.PROP_C);
}
}
上面这个例子,表示了interfacec继承了a和b,所以说c就获得了他们的常量,也就是说我们可以在mian()方法中直接调用c来访问a,b里面的常量。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。