Java public和package访问修饰符
公共和package访问修饰符定义了变量、类和方法的作用域,即它们确定了类或方法的成员如何被访问。修饰符在声明时附加到成员上。我们知道,这些访问修饰符在Java的面向对象编程概念中起着重要作用,如封装、多态和继承。它有助于防止成员提供的功能被滥用。在本文中,我们将通过示例程序了解Java中的public和package访问修饰符。
Java中的访问修饰符
公共访问修饰符
Java不限制public成员的可访问性。声明为public的任何东西都可以在任何地方访问,这意味着我们既可以在类内部访问它们,也可以在类外部访问它们,还可以在包内部访问它们,以及在包外部访问它们。您可能已经注意到,在Java中,main()方法总是被定义为public的,以便位于当前程序范围之外的JVM可以调用它。
一些公共访问修饰符的示例
public int i1 = 108;
public double d2 = 6.55;
在这里,变量被声明为公共的。
示例
下面的示例说明了Java中包成员的工作方式。
class Pack {
public void prnt() {
// method declared as public
String msg = "I am inside a public method";
System.out.print(msg);
}
}
public class ClassShow extends Pack {
// public child class
public static void main(String args[]) {
// creating object of child class
ClassShow obj = new ClassShow();
// method calling through object of child class
obj.prnt();
}
}
输出
I am inside a public method
在上面的代码中,类’Pack’是’ClassShow’的父类。在父类中,我们声明了一个名为’prnt()’的公共方法,用于打印一个简单的消息。在子类的main()方法中,我们定义了一个子类’ClassShow’的对象来调用公共方法’prnt()’。这里,子类也是公共的。
包访问修饰符
也被称为默认访问修饰符。当我们没有明确指定类和方法的访问修饰符时,Java编译器会自动将其视为默认或包成员。我们可以在子类内部以及同一包中的其他类中访问这些成员。
包访问修饰符的几个示例:
int i1 = 108;
double d2 = 6.55;
在这里,变量被声明为默认或包。
示例
以下示例说明了Java中包成员的工作原理。
public class Overflw {
static void methodA(int data1) {
// default method 1
data1++;
methodB(data1);
// calling methodB
}
static void methodB(int data1) {
// default method 2
data1++;
int data2 = 5;
// default member variable
int mult = data1 * data2;
System.out.println("Value of data1 and data2 multiplication is: " + mult);
}
public static void main(String []args) {
int data1 = 0;
// variable with default modifier
methodA(data1);
// calling methodA
}
}
输出
Value of data1 and data2 multiplication is: 10
我们创建了两个参数化的用户定义方法,分别命名为’methodA’和’methodB’。在主方法中,我们声明并初始化一个整数变量’data1’为0,然后将其作为参数传递给’methodA’。现在,’methodA’用增加后的’data1’的值调用’methodB’。在’methodB’内部,我们计算了乘法并打印结果。
公共访问修饰符与包访问修饰符的区别
通过以上讨论,我们可以得出以下公共访问修饰符和包访问修饰符之间的不同点。
公共的 | 包级别的 |
---|---|
我们需要使用关键字“public”来指定成员为公共的。 | 它不需要任何特定的关键字。 |
公共成员在包内和包外都可以访问。 | 包级别成员只能在同一包内访问。 |
它不提供任何限制。 | 它比公共访问修饰符更受限制。 |
结论
我们从定义公共和包访问修饰符开始本文,并在后续章节中详细解释了它们,并附有相应的示例。最后,我们讨论了它们之间的区别。