首页 >Java >java教程 >Java 中的访问修饰符

Java 中的访问修饰符

WBOY
WBOY原创
2024-08-30 15:59:15386浏览

众所周知,Java 是世界上最顶尖的编程语言之一。在过去的二十年里,数十亿设备依赖于它。 Java 是一种快速、可靠、安全的多平台语言。 Java 可以在任何设备上运行,只要该设备具有 Java 运行时 (JRE),这使其成为多平台、快速且可靠的。访问修饰符是java的属性,这使得它可以跨多平台安全。 Java 通过使用访问修饰符属性向程序员提供类级安全性(在封装期间)。根据这本书,类是在 Java 中构建对象的蓝图,这使得它成为程序的“构建块”,因为 Java 是一种面向对象的语言。访问修饰符指定任何类如何访问给定类及其在不同包中的字段、构造函数和方法。类、字段、构造函数和方法可以具有四种不同的 Java 访问修饰符之一。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

  • 私人
  • 公开
  • 受保护
  • 默认 – 无需关键字。

Java 中的不同访问修饰符

下表总结了我们如何将 Java 访问修饰符应用到程序中:

Modifiers Class Packages Sub-Class World
Private Y N N N
Public Y Y Y Y
Protected Y Y Y N
Default Y Y N N

我们将在以下部分中介绍每个 Java 访问修饰符。

1.默认

当任何类、数据成员和变量通过不使用访问修饰符进行声明时,它将被设置为“默认”访问修饰符。 “默认”访问修饰符意味着任何类中的代码都可以访问同一包中的整个程序。

  • 此访问修饰符仅在同一个包中有效。
  • 有时,“默认”访问修饰符也称为包访问修饰符,因为它只能在同一个包中访问。
  • 如果这些方法、数据成员和变量(字段)在类中用“默认”访问修饰符标记,则子类无法访问超类中的方法、数据成员和变量(字段),除非这些子类位于与超类相同的包。

示例#1:

//Java program to show the default modifier.
package Test;
//Where Class eduCBA is having Default access modifier as no access modifier is specified here
class eduCBA
{
void display ()
{
System.out.println("Hello World!");
}
}

输出:

世界你好!

示例#2:

//Java program to show error while using class from different package with default modifier
package test2;
import test.*;
//This class check is having default access modifier
class Check
{
public static void main(String args[])
{
//accessing class eduCBA from package test
eduCBA obj = new eduCBA();
obj.display();
}
}

输出:

编译时错误。

2.受保护

用户想要使用此访问修饰符时使用语法“protected”。

  • 此访问修饰符只能在同一包或不同类中的相同子类中访问(但用户必须在指定的位置导入该包)。
  • 用户不能使用“受保护”访问修饰符来标记类和接口。但是,如果方法和字段位于接口中,则方法和字段可以声明为受保护。

例如:

//Java program to show to protected access modifier
package test;
//Class eduCBA
public class eduCBA
{
protected void display ()
{
System.out.println("Hello World!");
}
}
//Java program to show to protected modifier in same sub-classes of different packages
package test2;
import test.*;
//Class pro is subclass of eduCBA
class pro extends eduCBA
{
public static void main(String args[])
{
pro obj = new pro();
obj.display();
}
}

输出:

世界你好!

3.公众

用户可以使用“public”访问修饰符声明类、方法、构造函数和接口,该修饰符可以被包内或不同包中的任何类、方法、构造函数和接口访问。

  • 此访问修饰符在所有修饰符中具有无限性。
  • 当任何类、方法或包被标记为“public”访问修饰符时,任何人都可以从程序的任何位置访问它。
  • “公共”访问类方法的范围没有限制。

例如:-

//Java program to show to public access modifier
package test;
public class eduCBA
{
public void display ()
{
System.out.println("Hello World!");
}
}
package test2;
import test.*;
class pub
{
public static void main (String args [])
{
eduCBA obj = new eduCBA ();
obj.display ();
}
}

输出:

世界你好!

4.私人

当方法或变量被标记为“私有”访问修饰符时,同一类内的代码只能访问这些方法和变量。

用户不能在程序中声明任何具有“private”访问修饰符的超类。如果用户对任何类执行此操作,则同一包中的任何其他类都无法访问该类,从而使该类无法使用。但是,用户可以使用“private”访问修饰符在类中声明变量和方法,因此任何人都无法使用这些变量和方法。

有时人们会混淆“私有”和“受保护”访问修饰符,但它们是不同的。

例如: –

//Program to show error while using a class from different packages with private modifier.
package test;
class eduCBA
{
private void display()
{
System.out.println("Hello World!");
}
}
class Check
{
public static void main (String args[])
{
eduCBA obj = new eduCBA();
//make class check to access private method of another class eduCBA.
obj.display();
}
}

输出:

错误:display() 在 eduCBA obj.display() 中具有私有访问权限;

结论

当您公开程序时,Java 访问修饰符会给您带来额外的优势。正如我们上面学习的,JAVA 中不同类型的访问修饰符及其规范。

因此,每次将其中一个用作类或接口访问时请记住,因为它们不仅提供访问,而且还会覆盖它们。虽然程序中方法的可访问性始终存在问题。例如,如果一个接口在超类中被分配了“默认”访问修饰符,它可以覆盖该方法的子类中使用的访问修饰符。

注意:类包括变量、构造函数、字段和方法,接口包括特定的字段或方法。

以上是Java 中的访问修饰符的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn