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日

相关文章

  • Visual Studio 2010怎么使用自带的安装项目打包程序?

    Visual Studio 2010自带的安装项目打包程序主要用于把项目打包成可执行的安装程序,方便用户安装使用。下面详细讲解一下使用自带的安装项目打包程序的步骤: 打开Visual Studio 2010,点击菜单栏中的“文件”,选择“新建”,再选择“项目”。 在“新建项目”窗口中,选择“其他项目类型”,再选择“安装程序”,最后选择“安装项目”。 在“安装…

    other 2023年6月25日
    00
  • 易语言初始化的方法步骤

    下面是易语言初始化的方法步骤的完整攻略,包括以下内容: 1. 导入所需的模块 在易语言中使用某些功能需要先导入相应的模块。比如要使用“文件操作”功能,就需要在程序顶部加上如下语句: use m_windows 2. 定义主函数 在易语言中,程序的入口函数是 main 函数。我们需要在程序的开始处定义这个函数,语法如下: def main() { // 执行的…

    other 2023年6月20日
    00
  • 浅谈标签和JLabel类构造方法 原创

    浅谈标签和JLabel类构造方法 介绍 在Java中,标签(Label)是一种用于显示文本或图像的组件。JLabel类是Swing库中的一个组件,用于创建和管理标签。本文将详细讲解JLabel类的构造方法以及如何使用它来创建和定制标签。 构造方法 JLabel类提供了多个构造方法,用于创建不同类型的标签。以下是常用的构造方法: 1. JLabel() 这是J…

    other 2023年8月6日
    00
  • iis中为每个应用程序池单独设置aspnet.config配置文件

    为每个应用程序池单独设置aspnet.config配置文件可以为我们提供更大的灵活性,以满足特定应用程序池的需求。下面是设置aspnet.config配置文件的完整攻略,包括两条示例说明。 一、创建aspnet.config文件 将Web应用程序池分配给您想要创建aspnet.config文件的应用程序。 在Web应用程序根目录中创建aspnet.confi…

    other 2023年6月25日
    00
  • Bitget安全下载地址以及基础知识分享

    Bitget安全下载地址以及基础知识分享攻略 1. Bitget安全下载地址 要确保安全下载Bitget,您可以按照以下步骤进行操作: 访问Bitget官方网站:https://www.bitget.com/ 在网站首页,您可以找到一个名为\”下载\”或\”Download\”的选项。点击该选项。 在下载页面,您将看到不同的版本和平台的下载链接。根据您的操作…

    other 2023年8月4日
    00
  • Android数据库相关整理

    Android数据库相关整理 Android作为目前最为流行的智能手机操作系统之一,其应用程序的数据存储涉及到SQLite、Room等多个数据库框架,针对这些框架的使用规范及优势劣势进行整理,提供给开发者更好的选择。 SQLite SQLite是Android内置的轻量级关系型数据库,是一种无需单独安装,即可直接使用的文件型数据库;由于其体积小、速度较快,被…

    其他 2023年3月28日
    00
  • iozone使用方法

    IOzone使用方法 IOzone是一款磁盘性能测试工具,可以测试磁盘的读写速度、随机访问速度等。本文将介绍如何使用IOzone进行磁盘性能测试。 安装IOzone IOzone可以在官方网站下载,也可以使用包管理器安装。在Ubuntu上,可以使用下面的命令安装: sudo apt-get install iozone3 进行测试 使用IOzone进行测试需…

    其他 2023年3月28日
    00
  • prometheus安装

    Prometheus安装的完整攻略 Prometheus是一款开源的监控系统,用于监控各种应用程序和系统组件。本文将介绍如何在Linux系统上安装和配置Prometheus,包括以下步骤: 安装Prometheus 配置Prometheus 添加监控目标 示例1:监控Node.js应用程序 示例2:监控MySQL数据库 步骤1:安装Prometheus 在L…

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