接口
接口的定义和使用
接口的定义
jdk8之前 接口只能定义 静态常量 和 抽象方法
jdk8之后 接口增加了静态方法 默认方法.
使用 interface 关键字用来声明一个接口。
[访问修饰符] interface 接口名称 [extends 其他的接口名1,….其他的接口名n]
{
// 声明常量 抽象方法 静态方法 默认方法
}
/*设计一个动物接口*/
public interface Animal{
//public static final int num = 10;
int num = 10; //接口中的成员变量默认是 静态常量
//public abstract void eat();
void eat(); //接口定义抽象方法
//静态方法 直接通过接口名调用
public static void testStatic(){
System.out.println("testStatic");
}
//默认 通过子类对象调用
public default void testDefault(){
System.out.println("testDefault");
}
}
接口的使用
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
[访问修饰符] class 类名 implements 接口名1,接口名2……{ }
结合继承:
[访问修饰符] class 类名 extends 父类名 implements 接口名1,接口名2……{ }
//public abstract class Dog implements Animal{
//接口实现和子类继承父类一样,实现类要么定义成抽象类,要么重写接口里面的所有抽象方法。
public class Dog extends Object implements Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
接口的特性
• 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字
• 接口中方法可以是抽象的,静态的,默认的
• 接口中声明的属性默认为 public static final 的
• 接口不是被类继承了,而是要被类实现
• 接口不能实例化对象,无构造方法
• 一个类可以实现多个接口
• 与继承关系类似,接口与实现类之间存在多态性
• 一个接口能继承其它多个接口
• 当类实现接口的时候,类要实现接口中所有的抽象方法。否则,类必须声明为抽象的类