我们可以在Java接口中为成员定义私有private和protected受保护的修饰符吗?

不,不可能为Java接口中的成员定义私有修饰符和受保护的修饰符。

  • 众所周知,接口中定义的成员是隐式公共的,换句话说,我们可以说接口中定义的成员默认是公共的。

  • 可以在接口中为成员定义公共修饰符。

  • 对于public修饰符,由于接口的所有成员默认情况下都是public,因此在接口中的成员之前不必强制给“ public”加上前缀。

  • 我们将针对接口中成员的修饰符讨论三种情况。

    1. 如果我们为接口中的成员定义私有修饰符,将会发生什么?

    2. 如果我们为接口中的成员定义受保护的修饰符,将会发生什么?

    3. 如果我们在接口中为成员定义公共修饰符,将会发生什么?

    4. 如果我们在接口中没有为成员定义修饰符,将会发生什么?

在示例的帮助下,我们将逐一看到上述每种情况...

1)在Java接口中为成员定义私有修饰符

//Java程序演示的例子
//为接口定义私有成员 

interface PrivateMemberInterface {
    private String str = "There will be an error.";
    void display();
}

public class Main implements PrivateMemberInterface {
    //覆盖display()PrivateMemberInterface-
    public void display() {
        System.out.print("Private modifiers not allowed");
        System.out.print("for Data Members");
    }

    public static void main(String[] args) {
        //类实例化
        Main m = new Main();

        //调用display()主类
        m.display();

        //访问接口的私有成员
        System.out.println(str);
    }
}

输出结果

/Main.java:5: error: modifier private not allowed here
    private String str = "There will be an error.";
                   ^
1 error

结论:我们不能为接口中的成员定义私有修饰符。

2)在Java接口中为成员定义受保护的修饰符

//Java程序演示的例子
//为接口定义受保护的成员 

interface ProtectedMemberInterface {
    protected String str = "There will be an error.";
    void display();

}

public class Main implements ProtectedMemberInterface {
    //覆盖display()ProtectedMemberInterface-
    public void display() {
        System.out.print("Protected modifiers not allowed");
        System.out.print("for Data Members");
    }

    public static void main(String[] args) {
        //类实例化
        Main m = new Main();
        //调用display()主类
        m.display();
        //访问接口的受保护成员
        System.out.println(str);
    }
}

输出结果

/Main.java:5: error: modifier protected not allowed here
    protected String str = "There will be an error.";
                     ^
1 error

结论:我们也不能为接口中的成员定义受保护的修饰符。

3)在Java接口中为成员定义公共修饰符

//Java程序演示的例子
//为接口定义公共成员 

interface PublicMemberInterface {
    public String str = "No error here...";
    void display();
}

public class Main implements PublicMemberInterface {
    //覆盖display()PublicMemberInterface-
    public void display() {
        System.out.print("Public modifiers are allowed" + " ");
        System.out.print("for Data Members");
    }

    public static void main(String[] args) {
        //类实例化
        Main m = new Main();
        //调用display()主类
        m.display();
        System.out.println();
        //访问接口的公共成员
        System.out.println(str);
    }
}

输出结果

Public modifiers are allowed for Data Members
No error here...

结论:我们可以为接口中的成员定义公共修饰符,并且在Java中有效。

4)在Java接口中未为成员定义任何修饰符

//Java程序演示的例子
//的成员定义任何修饰符 
//接口 

interface NoModifierMemberInterface {
    String str = "No error here...";
    void display();
}

public class Main implements NoModifierMemberInterface {
    //覆盖display()NoModifierMemberInterface-
    public void display() {
        System.out.print("No modifiers are allowed" + " ");
        System.out.print("for Data Members");
    }

    public static void main(String[] args) {
        //类实例化
        Main m = new Main();
        //调用display()主类
        m.display();
        System.out.println();
        //不访问接口的修饰符成员
        System.out.println(str);
    }
}

输出结果

No modifiers are allowed for Data Members
No error here...

结论:我们不能为接口中的成员定义修饰符,它在java中是有效的,因为成员的默认修饰符是public。