📅  最后修改于: 2020-03-27 03:47:21             🧑  作者: Mango
顾名思义,Java中的访问修饰符有助于限制类,构造函数,变量,方法或数据成员的范围。Java中有四种可用的访问修饰符:
在此示例中,我们将创建两个包,并且这些包中的类将具有默认的访问修饰符,并且我们将尝试从第二个包的类中的一个包访问一个类。
//Java代码展示默认修饰符
package p1;
//Class 芒果,拥有默认修饰符
class mango
{
void display()
{
System.out.println("Hello World!");
}
}
//Java代码,展示从别的类调用而报错的默认修饰符
package p2;
import p1.*;
//这个类有默认修饰符
class mangoNew
{
public static void main(String args[])
{
// 从p1,访问class mango
mango obj = new mango();
obj.display();
}
}
输出:
Compile time error
因此,这些修饰符在应用于类方面仅适用于嵌套类,不适用于顶级类
在此示例中,我们将在同一包p1中创建两个类A和B。我们将在类A中将一个方法声明为私有,然后尝试从类B中访问此方法并查看结果。
//Java展示private的使用
package p1;
class A
{
private void display()
{
System.out.println("芒果文档");
}
}
class B
{
public static void main(String args[])
{
A obj = new A();
// 尝试访问别的类的方法
obj.display();
}
}
输出:
error: display() has private access in A
obj.display();
在此示例中,我们将创建两个包p1和p2。将p1中的Class A公开,以便在p2中访问它。类A中的方法受到保护,并且类B从类A继承,然后通过创建类B的对象来访问此受保护的方法。
//Java代码,展示protected关键字
package p1;
// 类A
public class A
{
protected void display()
{
System.out.println("芒果文档");
}
}
//Java代码,展示protected关键字
package p2;
import p1.*; //从p1导入所有类
// B继承A
class B extends A
{
public static void main(String args[])
{
B obj = new B();
obj.display();
}
}
输出:
芒果文档
public:使用关键字public指定公共访问修饰符。
//Java程序,展示公共访问修饰符public用法
package p1;
public class A
{
public void display()
{
System.out.println("芒果文档");
}
}
package p2;
import p1.*;
class B
{
public static void main(String args[])
{
A obj = new A;
obj.display();
}
}
输出:
芒果文档
重要事项: