每当编写类时,必须向JVM提供一些关于类的信息,比如这个类是否可以从任何地方访问,是否可以创建子类,是否可以创建对象等等。可以通过使用java中适当的关键字来指定这些信息,即访问修饰符。所以访问修饰符被用来设置类、方法和其他成员的可访问性。

public访问修饰符

如果一个类被声明为public,那么可以从任何地方访问该类。

在下面的例子中,创建了一个包pack1,在这个包中,声明了一个公开的类A,在这个类中,声明了一个同样是public的方法m1。现在创建另一个包pack2,在pack2中导入pack1并声明一个B类,在B类的main方法中创建一个A类的对象并试图访问方法m1的数据。

import java.io.*;
import java.util.*;

// declaring a public class
public class A {

    // declaring method m1
    public void m1() { System.out.println("YiibaiDemo"); }
}

class B {

    // main method
    public static void main(String[] args)
    {
        // creating an object of type class A
        A a = new A();

        // accessing the method m1()
        a.m1();
    }
}

如果在编译B类时,A类不是公共的,会得到编译时的错误,说pack1。A在pack1中不是公共的,不能从外部包中访问。同样地,如果一个成员或方法或接口被声明为公共的,那么就可以从任何地方访问该成员。

private访问修改器:

这个修饰符不适用于顶层类或接口。它只适用于类内部的构造函数、方法和字段。如果一个变量、方法或构造函数被声明为私有(private),那么只能从类内访问它们,即从类外不能访问它们。

// Java program to showcase the example
// of private access modifier

// import required packages
import java.io.*;

import java.util.*;

// helper class
class A {

    // helper method
    private void m1() { System.out.println("YiibaiDemo"); }
}

// driver class
class B {

    // main method
    public static void main(String[] args)
    {
        // creating an object of type class A
        A a = new A();

        // accessing the method m1()
        a.m1();
    }
}

运行结果:

Java中的Public和Private访问修饰符的区别

Public访问修改器 Private访问修改器
Public修饰符适用于顶层类和接口。 Private修饰符不适用于顶层类和接口。
Public成员可以从同一包的子类中访问。 Private成员不能从同一包的子类中访问。
Public成员可以从同一包的非子类中访问。 Private成员不能从同一包的非子类中访问。
Public成员可以从外部包的子类中访问。 Private成员不能从外部包的子类中访问。
Public成员可以从外部包的非子类中访问。 Private成员不能从外部包的非子类中访问。
Public修改器是最容易访问的修改器。 Private修改器是最受限制的修改器。
Public修改器是方法的推荐修改器。 Private修饰符是数据成员的推荐修饰符。

Java中的Public和Private访问修饰符的区别

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Java中的Public和Private访问修饰符的区别
本文链接:https://www.vsdiffer.com/vs/public-vs-private-access-modifiers-in-java.html
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。