1.接口的定义格式:
Interface 接口名称{}
2.接口中的变量一定是常量:
public static final 变量名=变量值;
3.接口中的方法没有方法体,且方法的修饰符public abstract可以省略:
[public abstract] 返回值类型 方法名称(参数列表);
4.当接口中需要增加方法,而不想影响到其他实现该接口的类时,可以使用默认方法,默认方法也可以被重写:
public default 返回值类型 方法名(参数列表){ ...}
5.私有方法只能在接口内部被访问,具有安全性,同时可以减少代码冗余:
private 返回值类型 方法名(参数列表){ ...}
注意:接口中的方法不一定都是抽象方法,在JDK8,JDK9中,接口可以有默认方法,私有方法。
代码演示:
interface Animal { //常量年龄为2岁 public static final int age=2; //抽象方法eat() public abstract void eat(); //默认方法run() public default void run(){ System.out.println("动物在跑"); } //静态方法sleep() public static void sleep(){ System.out.println("动物在睡觉"); } //私有方法play() private static void play(){ System.out.println("开始游戏"); System.out.println("暂停游戏"); System.out.println("继续游戏"); System.out.println("结束游戏"); } //默认方法happy() public default void happy(){ //调用了私有方法play(),可以减少代码冗余,同时不让接口以外访问到,具有安全性 play(); System.out.println("玩得很开心"); } }
public class Cat implements Animal{ //重写eat()抽象方法 @Override public void eat() { System.out.println("猫在吃"); } //重写默认方法run() @Override public void run() { System.out.println("猫在跑"); } }
public class Demo6{ public static void main(String[] args) { Cat cat=new Cat(); System.out.println("猫的年龄是"+cat.age); cat.eat(); cat.run(); cat.happy(); Animal.sleep(); } }
运行结果: