接口中的方法和变量

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();
    }
}

运行结果:

原文地址:https://www.cnblogs.com/iceywu/p/12017497.html