Java中的private、protected、public和default的区别(详解)

yizhihongxing

Java中的private、protected、public和default的区别(详解)

Java是一门有名的面向对象编程语言,在面向对象的编程中,访问控制(non-accessibility)是至关重要的一环。Java提供了四种访问修饰符,使用不同的访问级别控制程序员能否使用类、变量、方法等等。在这篇文章中,我们将详细探讨Java中的四种访问修饰符:private、protected、public、default。

private

private是Java中最严格的访问修饰符,只能在声明这个成员变量或成员方法的类中直接访问,即使是在同一个包中的其他类也不能访问。私有成员只能通过类内公共方法才能访问。

示例

下面的代码创建了一个Person类,其中age是私有变量,通过getAge()和setAge()方法,才能在类外访问age变量。

public class Person {
   private int age;

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }
}

protected

protected访问修饰符允许子类访问其父类的字段和方法。这意味着如果一个类被定义为protected,它可以被同一包中的任何类访问,或任何其他包中的子类访问,即使这些子类并不在同一包中。

示例

下面的代码创建了一个Person类,其中有一个protected方法,名为doSomething()。然后创建了一个Employee类,继承了Person类,并覆盖了doSomething()方法。

public class Person {
   protected void doSomething(){
      System.out.println("Person's protected method");
   }
}

public class Employee extends Person {
   public void doSomething(){
      System.out.println("Employee's public method");
   }
}

public

public是Java中最常见的访问修饰符,它在任何位置都可以访问。如果一个类被定义为public,则它可以被任何其他类访问,不管这些类是否在同一包中。

示例

下面的代码创建了一个Person类,其中有一个公共方法,名为sayHello()。创建了一个实例化的Person对象,然后调用了其sayHello()方法。

public class Person {
   public void sayHello(){
      System.out.println("Hello, World!");
   } 
}

public class Example {
   public static void main(String[] args) {
      Person person = new Person();
      person.sayHello();
   }
}

default

如果不指定任何访问修饰符,则被定义为default。default修饰符只能在同一包中可见,即默认不可见的。如果一个类没有被定义为public,则它通常是一个默认访问修饰符。

示例

下面的代码创建了一个名为MyClass的类,并将其定义为默认访问修饰符。然后在MyClass所处的同一包中,创建了一个Example类实例,并访问了MyClass中的defaultValue变量。

class MyClass {
   String defaultValue = "Hello, World!";
}

public class Example {
   public static void main(String[] args) {
      MyClass myClass = new MyClass();
      System.out.println(myClass.defaultValue);
   }
}

结论

访问修饰符是Java中面向对象编程的一个重要方面。private,protected,public和default是我们在Java中定义和访问类、变量、方法等时所使用的关键字。我们必须小心地使用这些关键字,以便在不同的类和包之间定义和使用类的可见性。在每个不同的情况下,我们都应该了解每个访问修饰符的限制和优点,并据此选择恰当的修饰符。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的private、protected、public和default的区别(详解) - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • springboot + vue 实现递归生成多级菜单(实例代码)

    下面我将为您详细讲解“springboot + vue 实现递归生成多级菜单”的完整攻略。 简介 本文将介绍如何使用SpringBoot和Vue.js实现递归生成多级菜单。通过该方案,可以生成任意深度的多级菜单。 准备工作 在开始之前,需要下载安装以下软件: JDK 8+ Node.js Vue CLI 创建SpringBoot项目 首先,使用Spring …

    other 2023年6月27日
    00
  • 升级ios9内存不够怎么办 ios9升级空间不够解决办法

    升级iOS 9内存不够的解决办法 升级iOS 9操作系统时,如果设备的内存不足,可能会导致升级失败或者无法完成。以下是一些解决办法,帮助您解决iOS 9升级空间不足的问题。 1. 清理设备存储空间 在升级iOS 9之前,清理设备的存储空间是一种常见的解决方法。以下是一些可以帮助您释放存储空间的示例: 删除不需要的应用程序和数据:检查设备上的应用程序列表,并删…

    other 2023年8月1日
    00
  • postman的使用方法详解!最全面的教程

    Postman的使用方法详解!最全面的教程 Postman是一款广泛使用的API测试工具,它可以帮助开发人员更快速、更有效地进行API开发、测试和调试。在本文中,我们将详细介绍Postman的使用方法。 什么是Postman? Postman是一款开源的跨平台API测试工具,它可以帮助开发人员更快速、更有效地进行API开发、测试和调试。Postman的特点是…

    其他 2023年3月28日
    00
  • 【历史】-windowsnt之父-davidcutler

    以下是详细讲解“【历史】Windows NT之父David Cutler的完整攻略,过程中至少包含两条示例说明”的Markdown格式文本: 【历史】Windows NT之父David Cutler David Cutler是一位计算机科学家,被誉为Windows NT操作系统的创造者和主要开发者。本攻略将介绍David Cutler的生平和Windows …

    other 2023年5月10日
    00
  • 【go】go语言的%d %p %v等占位符的使用

    在Go语言中,占位符是一种用于格式化输出的特殊字符。占位符可以在输出时被替换为实际的值,以便更好地控制输出的格式和内容。常见的占位符包括%d、%、%f、%p、%v等。 以下是Go语言中常见占位符的使用方法: %d:用于输出整数类型的,例如int、int8、int16、int32、int64等。示例: num := 123 fmt.Printf("n…

    other 2023年5月8日
    00
  • js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解

    一、什么是js嵌套的数组扁平化 当一个数组中嵌套了多个数组时,我们把这种数组称为多维数组。而将多维数组变成一维数组的操作就被称为数组扁平化。js嵌套的数组扁平化就是将多维数组变成一维数组的过程,使得多维数组中的元素都能展开成一维数组。 二、js嵌套数组扁平化的实现方式 实现js嵌套数组扁平化有多种方式,例如用递归、利用数组的flat()方法等,这里介绍一种比…

    other 2023年6月25日
    00
  • vscode扩展代码定位实现步骤详解

    下面我来详细讲解“vscode扩展代码定位实现步骤详解”的完整攻略。 一、概述 在谈到vscode扩展代码定位实现方式时,需要了解几个概念:位置(position)、范围(range)和位置提供器(location provider)。位置提供器是一个能够按需从给定位置提供位置和范围的对象。可以为vscode扩展注册位置提供器来实现代码定位的功能,下面是具体…

    other 2023年6月26日
    00
  • python将float转换为字符串

    Python将float转换为字符串攻略 在Python中,我们可以使用str()函数将float类型的数据转换为字符串类型。本攻略将介绍如何将float类型的数据转为字符串类型,并提供两个示例。 方法一:使用str()函数 我们可以使用Python内置的str()函数将float类型的数据转换为字符串类型。以下是一个示例,展示了如何使用str()函数将fl…

    other 2023年5月9日
    00
合作推广
合作推广
分享本页
返回顶部