java四种访问权限实例分析

Java四种访问权限实例分析

在Java中,有四种访问权限修饰符,包括public、protected、default和private。对于不同的访问权限,它们所允许的访问范围也不同,下面我们来详细讲解一下。

1. public

public是最宽松的访问权限,使用public修饰的类、变量和方法可以被任何其他类所访问,包括在不同包中的类。

示例1:

package com.example.a;
public class A {
    public int num1 = 1;
    protected int num2 = 2;
    int num3 = 3;
    private int num4 = 4;
}

在示例1中,我们在包com.example.a中定义了一个类A,并对其四个成员变量分别使用了public、protected、default和private修饰符。其中,num1是public修饰的,可以在其他包的任何类中访问到;num2是protected修饰的,可以在A类及其子类以及在同一个包中的其他类中访问到;num3是default修饰的,可以在同一个包中的其他类中访问到;num4是private修饰的,只能在A类中访问到。

示例2:

package com.example.b;
import com.example.a.A;
public class B {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.num1); // 可以访问到
        System.out.println(a.num2); // 编译报错
        System.out.println(a.num3); // 编译报错
        System.out.println(a.num4); // 编译报错
    }
}

在示例2中,我们在包com.example.b中定义了一个类B,并引入了包com.example.a中的类A。在B类的main方法中,我们创建了一个A类的对象a,通过对象a可以访问到A类中的num1成员变量,因为它是public修饰的。但是,对于其他三个成员变量,由于它们的访问权限小于public,我们无法在B类中访问到,会编译报错。

2. protected

protected修饰的成员变量和方法可以被该类本身、该类的子类和同一个包的其他类所访问。

示例3:

package com.example.a;
public class A {
    protected void test() {
        System.out.println("protected method");
    }
}

在示例3中,我们在包com.example.a中定义了一个类A,并对其test()方法使用protected修饰符。这意味着,test()方法可以被A类本身、A类的子类和同一个包中的其他类所访问到。

示例4:

package com.example.a;
public class B extends A {
    public static void main(String[] args) {
        B b = new B();
        b.test(); // 可以访问到
    }
}

在示例4中,我们定义了一个类B,继承了A类,并在B类的main方法中创建了一个B类的对象b。由于B类是A类的子类,所以它可以访问到A类中被protected修饰的test()方法。

3. default

default是不写访问权限修饰符时的默认访问权限,它允许同一个包中的其他类访问。

示例5:

package com.example.a;
class C {
    void test() {
        System.out.println("default method");
    }
}

在示例5中,我们在包com.example.a中定义了一个类C,并对其test()方法没有使用任何访问权限修饰符。这意味着,test()方法的访问权限是default,也就是可以被同一个包中的其他类所访问到。

示例6:

package com.example.b;
import com.example.a.C;
public class D {
    public static void main(String[] args) {
        C c = new C();
        c.test(); // 可以访问到
    }
}

在示例6中,我们在包com.example.b中定义了一个类D,并引入了包com.example.a中的类C。在D类的main方法中,我们创建了一个C类的对象c,通过对象c可以访问到C类中的test()方法,因为它们在同一个包中。

4. private

private是访问权限最小的修饰符,使用private修饰的成员变量和方法只能被该类本身所访问,其他类无法访问。

示例7:

package com.example.a;
public class A {
    private void test() {
        System.out.println("private method");
    }
}

在示例7中,我们在包com.example.a中定义了一个类A,并对其test()方法使用private修饰符。这意味着,test()方法只能被A类本身所访问。

示例8:

package com.example.b;
import com.example.a.A;
public class B {
    public static void main(String[] args) {
        A a = new A();
        a.test(); // 编译报错
    }
}

在示例8中,我们在包com.example.b中定义了一个类B,并引入了包com.example.a中的类A。在B类的main方法中,我们创建了一个A类的对象a,但是无法访问到A类中被private修饰的test()方法,会编译报错。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java四种访问权限实例分析 - Python技术站

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

相关文章

  • 添加学生信息(Javaweb)

    添加学生信息(Javaweb)的完整攻略 本文将为您详细讲解如何在Javaweb中添加学生信息,包括前端页面设计、后端代码实现、数据库操作等内容。 前端页面设计 在Javaweb中,可以使用JSP和Servlet等技术来实现前端页面设计。以下是添加学生信息的前端页面设计示例: <!DOCTYPE html> <html> <he…

    other 2023年5月6日
    00
  • Golang打包配置文件的实现示例

    下面是关于“Golang打包配置文件的实现示例”的完整攻略。 1. 简介 在Golang项目中,我们经常需要使用配置文件来配置我们的应用程序。但是,如果有很多配置文件,传递文件可能会变得很困难。因此,我们可以把配置文件打包成一个二进制文件,以便它们可以在应用程序启动时一起加载。在这篇攻略中,我们将详细讲解如何在Golang中实现打包配置文件。 2. 基本思路…

    other 2023年6月25日
    00
  • C++封装静态链接库和使用的详细步骤

    下面是关于C++封装静态链接库和使用的详细步骤的完整攻略。 什么是静态链接库? 静态链接库(Static Library)是一种可重用的代码库,可以在程序编译期间链接到程序中,从而实现代码的复用。静态链接库能够方便地组织和管理程序代码,其中包含了多个函数、结构体和变量的定义。在使用静态链接库时,程序会把库代码复制到可执行二进制文件中,使得程序运行时能够直接调…

    other 2023年6月25日
    00
  • virsh命令和虚拟机**

    当然,我很乐意为您提供关于“virsh命令和虚拟机管理”的完整攻略。以下是详细的步骤说明: 步骤说明 virsh是一款用于管理虚拟机的命行工具,可以通过virsh命令来创建、启动、止、删除虚拟机等操作。以下是使用virsh命令管理虚拟机详细步骤: 打开终端或命令行界面,并输入以下命令以启动virsh: bash virsh 在virsh命令行界面中,可以使用…

    other 2023年5月9日
    00
  • openssl ans.1编码规则分析及证书密钥编码方式

    OpenSSL ASN.1编码规则分析及证书密钥编码方式 什么是ASN.1编码规则? ASN.1(Abstract Syntax Notation One)是一种数据交换格式标准,支持在网络上的不同计算机平台之间互操作。ASN.1编码规则定义了ASN.1数据结构如何以二进制形式进行编码和解码,以实现在网络上的传输和接收。 ASN.1编码规则主要包括以下几种:…

    其他 2023年3月28日
    00
  • 一文详解Java抽象类到底有多抽象

    当我们说到Java中的抽象类,通常会将其与接口(interface)进行对比,并认为抽象类是一种介于具体类和接口之间的概念。实际上,Java抽象类的表现形式的确不如接口那样抽象,但在Java中,我们可以通过抽象类来实现一些非常有意义的功能。下面我将详细讲解一下Java抽象类及其使用方法。 什么是Java抽象类 抽象类是一种不能被实例化(即不能用new运算符创…

    other 2023年6月26日
    00
  • ble协议栈入门一(基本概念)

    BLE协议栈入门一(基本概念) BLE(Bluetooth Low Energy)是一种低功耗蓝牙技术,广泛应用于物联网、智能家居、健康监测等领域。BLE协议栈是指在BLE设备中实现BLE协议的件栈,包括物理层、链路层、协议层和应用层。本攻略将介绍BLE协议栈的基本概,包BLE协议栈的组成、BLE协议栈的层次结构、BLE协议栈的工作原理等。 BLE协议栈的组…

    other 2023年5月7日
    00
  • 什么是服务器

    什么是服务器 服务器是指在网络中接受其他设备请求并提供服务的计算机。它可以是一台物理机器,也可以是一组虚拟机。在一个网络中,有许多不同种类的服务器,像是Web服务器、邮件服务器、数据库服务器等等。 服务器的作用 服务器的作用很多,其中最常见的应用包括: 存储和管理数据:服务器通常会有更大的储存空间,可以用来存储和管理数据。 提供服务:服务器主要被用来提供服务…

    其他 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部