每当编写类时,必须向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
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。