【Java SE】 详解java访问限定符

news2024/11/14 15:29:18

在这里插入图片描述

访问限定符

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
在这里插入图片描述
实际只有三种访问限定符,default的意思是默认情况下,不加这三种访问限定符的时候。
1.private:只能在自己类种被访问,出了自己类就无法被直接访问,但可以间接被访问。

class Student {
    private String name;
}
public class Main {
    public static void main(String[] args) {
        Student student = new Student();
        student.name;
    }

}

我定义一个Student类,在Main类中实例化Student类的对象,然后去访问Student类中的成员变量name,显示编译错误,通过这个现象推出一个想法说明由private修饰的成员变量,在另一个类中无法被直接访问。

为了更可以证实这个推论,我们在Student自己类中实例化对象,然后再去访问一下。

class Student {
    private String name;
    Student student = new Student();
    public void fun() {
        student.name = "x";
    }
}

结论:由private修饰的成员变量只能在自己类中被直接访问,在其他类中是不可以被直接访问的,如果要访问成员变量只能通过间接的方法去访问。

那么怎么用这种方法去访问,可以去看我的上一篇文章。

2.不加这三种任何一个限定符(default):这种情况只能在同在一个包中访问。

//在Deom包中
public class Animal {
    String name;

    public static void main(String[] args) {
        
    }
}
//在Deom中不同类
public class Dog {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name = "小黄";
    }

        }
        //不在Deom包中,在Deom1包中的类
        public class Cat {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name;
    }
}

不在同一个包中,由protected修饰的成员变量是不能被访问的。

3.protected:在不同包中的非子类是不能被访问的。

//在Deom包中的Animal类由protected修饰的成员变量
public class Animal {
    protected String name;

    public static void main(String[] args) {

    }
}
//在同一个包中,不同类中:
public class Dog {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name = "小黄";
    }

        }
 //在不同包中,但是Deom包Animal类的子类:
 package Deom1;

import Deom.Animal;
public class Cat extends Animal{
    public void fun() {
        Animal animal = new Animal();
        super.name = "旺财";//要通过super关键字去访问,而且不能在static关键字修饰的方法中用这个super这个关键字
    }
    public static void main(String[] args) {
    }
    //不在同一个包中而且也不是Deom包Animal类的子类
    public class Student {
    public void func() {
        Animal animal = new Animal();
        animal.name;
    }

    public static void main(String[] args) {

    }
}
   

不在同一个包,而且也不是子类,那么由protected修饰的成员变量就不能被访问。

4.public:这个限定符是不管你是不是在同一个包中是不是子类,都会不重要,因为都可以被访问。

【结尾】:
上一篇文章:【Java SE】 封装 || 包 || static关键字 || 代码块
下一篇文章:【Java SE】如何解读Java的继承和多态的特性?
希望大家可以给我一个一键三连,多多支持我的创作,感谢大家。🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1229401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Find My蓝牙耳机|苹果Find My技术与耳机结合,智能防丢,全球定位

蓝牙耳机就是将蓝牙技术应用在免持耳机上,让使用者可以免除恼人电线的牵绊,自在地以各种方式轻松通话。自从蓝牙耳机问世以来,一直是行动商务族提升效率的好工具。正是应为蓝牙耳机小巧无线,人们越来越喜欢随身携带蓝牙耳机出门&a…

Iris for Mac:简单易用的录屏神器,让你的演示更出色

你是否曾需要在Mac上进行屏幕录制,但却苦于找不到一款简单易用的工具?那么,今天我们将为你介绍一款全新的屏幕录制软件——Iris for Mac。这款软件不仅功能强大,而且操作简单,可以轻松满足你的各种录屏需求。 一、简单…

系列五、线程间通信

一、synchronized实现 1.1、案例一(2个线程交替对变量执行1、-1操作,来10轮) 1.1.1、资源类ShareDataOne /*** Author : 一叶浮萍归大海* Date: 2023/11/20 10:44* Description: 资源类* 说明:2个线程使用if判断变量的值&#…

Python中用requests时遇到的错误警告解决方案

最近,我在Python 2.7.6(Ubuntu 14.04.2 LTS)环境中将requests库的版本从2.5.3升级到2.6.0,却遇到了’A true SSLContext object is not available’警告。每当我在Python 2.7.6环境中尝试使用requests库访问’github’时&#xff…

论文笔记:The Impact of AI on Developer Productivity:Evidence from GitHub Copilot

0 abstract 本文介绍了一项对GitHub Copilot(一种人工智能编程助手)的控制实验结果。研究人员招募了软件开发人员,要求他们尽可能快地用JavaScript实现一个HTTP服务器。实验组可以访问人工智能编程助手,比对照组完成任务的速度快…

Python 进程和线程详解(multiprocessing、threading)

文章目录 1 概述1.1 进程 VS 线程1.2 优缺点 2 进程2.1 三个步骤2.2 多进程2.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取进程编号2.5 设置进程守护 3 线程3.1 三个步骤3.2 多线程3.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取线程编号2.5 设置…

python爬取快手视频

原理 F12点击graphql能够看到里面有若干视频信息,一会儿要取其中的url地址 右键复制cURL 然后进入到这个转换器连接 https://curlconverter.com/python/ 点击这个连接复制上述信息,然后就能解析处下面的代码,拷贝到你的项目中替换cookies,headers,json_data 源代码 …

大模型重塑软件设计,南京真我加入飞桨技术伙伴,大模型生态圈成员又添一员!

为帮助伙伴更快、更好的应用大模型技术,飞桨技术伙伴体系及权益基于星河共创计划全面升级,通过丰富的场景、技术、算力、品牌等资源,为伙伴企业提供一站式的大模型资源对接,全面降低创建AI原生应用的门槛。 近日,南京…

QQ自动批量加好友(手机端)

1.需求 按照格式输入批量qq号,输入加好友间隔时间,脚本自动打开qq应用开始自动加好友,全程自动化操作。 输入qq号格式: 运行示意图: 2.代码 function carmiLogin () {var carmi = getCarMi()try {const data = {"key": carmi}http.__okhttp__.setTimeout(3000…

「Verilog学习笔记」边沿检测

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1ns module edge_detect(input clk,input rst_n,input a,output reg rise,output reg down );reg a_tem ; always (posedge clk or negedge rst_n) beginif…

2023年中国负极材料分类、产量及市场规模分析[图]

锂离子电池主要由正极、负极、隔膜、电解液、电池外壳组成。负极材料是锂离子电池的重要原材料之一,对于锂离子电池起关键作用。在充电过程负极材料中不断地与锂离子发生反应,将锂离子“擒获并存储”起来,亦将外部的功以能量的形式存储在电池…

Leetcode2937. 使三个字符串相等

Every day a Leetcode 题目来源:2937. 使三个字符串相等 解法1:枚举 设 len1、len2、len3 分别为字符串 s1、s2、s3 的长度。 min_len 是 3 个字符串长度的最小值。 枚举 len min_len 到 len 1,设 t1、t2、t3 分别是字符串 s1、s2、s…

富友支付最近“战况”

中国人民银行上海市分行官网在昨天披露了一份关于富友支付的行政处罚公示信息。富友支付因为涉嫌违法违规的反洗钱行为而遭到中国央行的罚款。 罚款金额达到455万,可谓相当可观。 当支付机构受到罚款处罚时,一些公司会选择在收到罚单后发表声明&#xff…

Node.js黑马时钟案例(本人详细介绍实现过程)

先上没有使用node.js之前的html部分代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><style>* {margin: 0;padding: 0;}html,body {height: 100%;overflow: hidden;backgrou…

「Verilog学习笔记」ROM的简单实现

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 要实现ROM&#xff0c;首先要声明数据的存储空间&#xff0c;例如&#xff1a;[3:0] rom [7:0]&#xff1b;变量名称rom之前的[3:0]表示每个数据具有多少位&#xff0…

EfficientPhys

研究背景 基于相机的生理测量是一种非接触式方法&#xff0c;用于通过从身体反射的光捕获心脏信号。最常见的此类信号是通过光电体积描记图 (PPG) 测量的血容量脉搏 (BVP)。由此&#xff0c;可以推导出心率、呼吸率和脉搏传导时间。神经网络模型是当前最先进的 rPPG 测量方式。…

Rapid chain

这篇文章中提到 Elastico 运行6个epoch就会退化到公式失败率高达 0.97 omnileger 在第一个epoch需要一个初始化的随机种子&#xff0c;来初始化 VRF。这需要 O ( n 2 ) O(n^2) O(n2) 的复杂度&#xff0c;并且OminLedger 需要通过轻节点驱动枷锁和解锁的过程&#xff0c;这户家…

2023年中国中端连锁酒店分类、市场规模及主要企业市占率[图]

中端连锁酒店行业是指定位于中档酒店市场、具有全国统一的品牌形象识别系统、全国统一的运营体系、会员体系和营销体系的酒店。中端酒店通常提供舒适、标准化的房间设施和服务&#xff0c;价格较为合理&#xff0c;符合广大消费者的需求。其价格略高于经济型酒店&#xff0c;但…

【数字图像处理】Gamma 变换

在数字图像处理中&#xff0c;Gamma 变换是一种重要的灰度变换方法&#xff0c;可以用于图像增强与 Gamma 校正。本文主要介绍数字图像 Gamma 变换的基本原理&#xff0c;并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1. Gamma 变换原理 2. FPGA 布署与实现 2…

unity-模块卸载重新安装

unity-模块卸载重新安装 发现模块错误&#xff1f;发现不可以卸载重装&#xff1f;... 依据以下步骤试试&#xff1a; 1. 删除模块文件夹&#xff08;以安卓模块为例&#xff09; 2. 找见编辑器模块json 3. 找见所有安卓相关模块修改selected为false&#xff1a;"sel…