证明接口成员变量的默认修饰符

证明接口成员变量的默认修饰符


前言?‍❄️

我们知道,接口中的成员方法是 public 且为 abstract,成员方法的默认修饰符为 public static final,那么如何证明呢?下面就是我自己理解的证明过程。如果有误/有更好的证明方法,欢迎指正!?
在这里插入图片描述


证明修饰符 final?

我们尝试修改该成员属性的值,编译器报错 Cannot assign a value to final variable n1,说明该值已经为final修饰的常量,无法修改由 final 修饰的值,因此证明该成员变量由关键字final修饰

public class InterfaceDetail {
    public static void main(String[] args) {
        //1.证明 final
        IB.n1 = 30;
    }
}

//接口 IB
interface IB {
    //接口中的属性只能是 final,而且是 public static final 修饰符
    int n1 = 10;
    //相当于 public static final int n1 = 10;
}

在这里插入图片描述


证明修饰符 static?

关键字 static 最显著的特征就是 可以直接通过 类名.属性名直接调用,因此证明 static 关键字非常的容易

public class InterfaceDetail {
    public static void main(String[] args) {
        //1.证明 final
        //IB.n1 = 30;

        //2.证明static
        System.out.println(IB.n1);
    }
}

interface IB {
    //接口中的属性只能是 final,而且是 public static final 修饰符
    int n1 = 10;
    //相当于 public static final int n1 = 10;
}

在这里插入图片描述


证明修饰符 public?

证明该修饰符为 public 有两种思路:

  1. 在接口定义成员变量时,把权限修饰符一个一个试
    证明该成员属性由public修饰

  2. 利用访问权限的特点,来以此区分 默认访问权限与公共访问权限

包的结构如下图所示:
在这里插入图片描述

Inter1
package program.Java_07.p1;

public interface Inter1 {
    int n1 = 10;
}

Fu.java
package program.Java_07.p1;

public class Fu implements Inter1 {
    int n2 = 20;
}

Test01.java
package program.Java_07.p2;

import program.Java_07.p1.Fu;

public class Test01 {
    public static void main(String[] args) {
        Fu fu = new Fu();
        System.out.println(Fu.n1);
        //System.out.println(Fu.n2);
    }
}

证明接口的成员变量n1是由public修饰的,不同包下仍然可以访问到
而类Fu中的成员变量n2是由defult修饰的,不同包下不能访问
在这里插入图片描述


至此,证明接口成员变量的默认修饰符的所有关键字就都证明完毕了!?
有其他问题或者哪里不严谨的地方,欢迎评论区里留言。
如果有帮助的话,可以求个赞不?


版权声明:本文为qq_52357217原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。