Java 访问修饰符与非访问修饰符 | Java核心知识点整理

Posted 海拥✘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 访问修饰符与非访问修饰符 | Java核心知识点整理相关的知识,希望对你有一定的参考价值。

本小节详细介绍了 Java 访问修饰符。它们控制 Java 类及其成员(函数和数据)的可见性。它们是公共的、私有的和受保护的。

但是,当没有修饰符存在时,Java 也实现了默认情况。这意味着一个类、它的函数、字段只能被同一模块中的其他类访问。

顺便说一下,Java 中主要有四种类型的访问修饰符。让我们在示例的帮助下详细讨论它们中的每一个。

⏰1.Java 访问修饰符示例解释

以下是我们今天要讨论的要点。

private:在当前对象中可以使用,修饰变量和方法
default:(默认,什么都不写)在同一个包可以使用,修饰变量、方法
protected:对同一个包内的类和所有子类能使用。修饰:变量、方法
public:对所有类可以使用,修饰类、接口(默认)、变量、方法

-对外完全可见对本包和所有子类可见仅对本包可见仅对本类可见
访问控制修饰符PublicProtecteddefaultPrivate
同一包中的其它类
同一包中的子类
不同包中的其它类
不同包中的子类

修饰符介绍
Java 提供了多种机制来控制类或变量的对象的可见性。它们在编程术语中被称为修饰符。

它们可能属于以下类别之一:

  • 访问修饰符
  • 非访问修饰符

此外,Java 支持四种主要的访问修饰符。而非访问说明符在 Java 中有 7 种类型。您可以使用它们来指定对类、方法、构造函数或变量的访问级别。

Java 中的四个主要访问说明符是:

  • default 默认访问修饰符
  • private 私有访问修饰符
  • public 公共访问修饰符
  • Protected 受保护访问修饰符

根据 Java 继承概念:

  • 超类的公共方法也必须在子类中具有相同的级别。
  • 子类将无法使用私有方法。
  • 超类中的受保护方法在子类中是公共的或受保护的。

📇 2. default 访问修饰符

默认情况下,任何包都可以访问默认访问修饰符。程序员无需指定任何关键字即可使用默认访问修饰符。

这意味着程序员不需要显式指定类、方法或构造函数默认值。

默认情况下,可以从同一包中存在的任何其他“类”访问类或方法。我们通常不使用任何访问修饰符来定义变量和方法。

下面的示例显示了一个默认类:

class Def {
   int num = 175;  
       void print() {
          System.out.println("Default class " + num); 
      }
   }

public class Test {
   public static void main(String args[]) {
      Def def = new Def();
      def.print();
   }
}

如您所料,输出为:

Default class 175

📆 3. private 访问修饰符

顾名思义,私有访问修饰符只限制对定义的“类”的访问。借助“private”关键字,我们可以实现数据封装的真正概念。这意味着隐藏外部世界的私人成员。

此外,请注意所有用户定义的变量、构造函数或方法也可以具有私有访问权限。检查以下几点:

标记为私有的函数只能在类中访问。
您不能将顶级类或接口声明为私有。此外,如果是这样,那么它将毫无用处,因为没有人可以访问它。
程序员必须定义一个 getter 或 setter 来访问私有方法或变量。
下面的示例将帮助您可视化私有方法的 getter:

class Priv {
    private void PRINT() {
        System.out.println("Private access");
    }

    public void getPrint() {
        PRINT();
    }
}

public class Test {
    public static void main(String args[]) {

        Priv priv = new Priv();
        priv.getPrint();
    }
}

在上面的示例中,getPrint() 是私有函数 PRINT() 的 getter 函数。输出是:

Private access

如下图

📺 4. public 访问修饰符

public 修饰符在 Java 应用程序中最常见。它们意味着可以在整个包中访问任何公共类、方法、变量、接口或构造函数。

  • 在另一个包中使用公共类之前,必须先导入它。
  • 如果你继承了一个公共类,那么默认情况下子类将拥有它的所有方法和变量。

为了您的信息,Java 中的“main()”方法是公开的。

public class First {
    public void print() {
        System.out.println("Hello");
    }
}
public class Test extends First {
    public static void main(String args[]) {
        First first = new First();
        first.print();
    }
}

输出是

Hello

🎬 5. Protected 访问修饰符

具有受保护访问权限的对象或方法仅对包和子类可见。

以下是详细说明确切行为的几点:

  • 这些方法、变量或构造函数只能在包内访问,也可用于所有子类。
  • protected 关键字不适用于任何类或接口。
  • 接口方法或变量不能具有受保护的访问权限。

看下面的例子:

public class First {
   protected static int count;

   public void update(){
      System.out.println(++count);
   }

   public class Test extends First {

      public static void main(String args[]) {

         First out = new First();
         out.update();
      }
   }
}

输出:

1

🎥 非访问修饰符

在 Java 编程中,您将获得七个非访问修饰符。您可以在它们前面加上类/方法/变量/构造函数并在程序中使用它们。

这里有一些要点可以帮助您了解何时应该使用特定的修饰符。

  • Static - 这意味着某些东西与类直接相关。
  • Final – 表示对象是不可变的。
  • Abstract - 这意味着您需要子类来创建对象。
  • Synchronized - 表示一次只有一个线程可以执行一个方法。
  • Transient – 意味着在序列化过程中排除某些东西。
  • Volatile – 表示不同的线程可以修改变量的值。
  • Native – 它表明该方法在使用 JNI 或 JNA 的本机代码中可用。

🥋 几个关键点

以下是对上述概念的快速总结。它将帮助您更好地使用 Java 中的访问修饰符。

  • 如果您正在编写一个类以供重用,则将最严格的访问级别应用于逻辑上的那些字段。
  • 此外,将私有访问设为您的默认选择,直到出现可靠的相反情况。
  • 此外,永远不要将常量标识符标记为public。

🥇 结尾想说的

我希望你喜欢这篇文章。如果你喜欢它,也分享给你的朋友。有未提及的内容或想分享您的想法请随时在下面发表评论,我会尽快回复您。😉

我已经写了很长一段时间的技术博客,并且主要通过CSDN发表,这是我的一篇python基础教程。我喜欢通过文章分享技术与快乐。您可以访问我的博客: https://haiyong.blog.csdn.net/ 以了解更多信息。希望你们会喜欢!这里汇总了我的全部原创及作品源码:GitHub

如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦。

以上是关于Java 访问修饰符与非访问修饰符 | Java核心知识点整理的主要内容,如果未能解决你的问题,请参考以下文章

Java访问修饰符与

Java中各种(类方法属性)访问修饰符与修饰符的说明

Java中各种(类方法属性)访问修饰符与修饰符的简单说明

访问修饰符与可选修饰符static的使用

自学Java第二周的总结

初学总结--------Java修饰符与修饰关键字(且叫修饰关键字)