关于java中接口中默认修饰符的一些思考

以下内容均为个人理解,若有不当之处望批评指正

abstract interface AnimalInterface {
/**
 * 属性:interface 中的属性默认且必须是 public static final 且必须被初始化
 *     首先我们要清楚interface的创造初衷即能胜任作为和外部系统打交道的合同,就是接口是实现类的标准和规范。
 *     明白了这点再来解释这三个修饰符
 *     public:既然接口的初衷就是作为和外部系统打交道的合同,我并不知道未来外部别人怎么用我们的接口,所以尽量少给别人设置障碍(少添点堵),
 *             就设置权限为public,出于这种考虑,Sun公司一开始就规定,接口属性和方法默认就为public。
 *     static:可以从两个方面去考虑
 *             1.接口没有构造方法,即没有办法实例化,反向考虑,如果有成员属性,但没有办法实例化这些成员属性也无法发挥作用
 *             2.接口是面向外部系统的,外部系统如何使用接口存在很大的未知性,将属性设置为static则未来的子类的static方法也能访问到它,可以最大限度的发挥接口属性的功能。
 *     final:final就很好理解了,既然是合同,那当然不能被轻易的改变
 *     必须被初始化:Java中每一个类都有构造方法(抽象类也需要有),而接口没有构造方法
 *                因此接口不能调用构造方法初始化其属性只能在定义时写出默认值
 *
 * 方法:interface中的方法默认修饰符为public abstract
 *     public:理解同属性的public
 *     abstract:接口之所以称之为接口就是因为abstract,不做解释
 *     
 * 接口:interface定义时的默认修饰符为 abstract
 */
    int age0 = 0;
    public int age1 = 1;
    public static int age2 = 2;
    public static final int age3 = 3;
    
    void fun0();
    public void fun1();
    public abstract void fun2();
}

你可能感兴趣的:(Java基础)