java四种访问修饰符

article/2025/9/9 21:46:25

访问修饰符 public,private,protected,以及不写(默认)时的区别:

定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

分类:

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
public : 对所有类可见。使用对象:类、接口、变量、方法

访问修饰符图:

在这里插入图片描述

详解:

在这里插入图片描述

在这里插入图片描述

封装的概念:
封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,隐藏对象属性和实现细节,仅对外提供访问形式,提高安全性和代码复用性

封装的体现:
我们将类的属性私有化,同时,提供公共的public的get,set方法来 获取和设置此属性的值。

封装性的其他体现:
①属性私有化②不对外暴露的私有方法③单例模式等

在这里插入图片描述

注意:工程是最大权限,不同工程绝对用不了,除非引入api到工程中。

在这里插入图片描述

面试回答:

定义:Java中,可以使用4种访问修饰符来保护对类、变量、方法和构造方法的访问。
分类:private(当前类访问权限) : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(这里不能修饰外部类)
default(包访问权限) (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
protected (子类访问权限): 对同一包内的类和不同包的所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
public(公共访问权限) : 对所有类可见。使用对象:类、接口、变量、方法

一、private(当前类访问权限):

1.在当前类开发中,main方法之外可以直接借助名字使用,当前类的main方法中可以使用对象打点的方式直接使用成员。

2.在当前类之外,使用对象(或是类名,针对静态的)打点调用都是被限制的。这时候有同学问,那我开发的这个私有的成员难道不能使用了吗?不是,可以通过在当前类中开发一个公有的方法,在公有方法中可以使用这个私有的成员,从而达到间接使用私有成员。

3.在继承中,私有成员禁止被继承,也就是说在子类的开发中,拒绝直接使用私有成员的名字进行使用。
   
二、default(包访问权限):

如果类里的一个成员(包括成员变量、方法和构造器等)或者一个外部类不使用任何访控制符修饰,就称它是包访问权限的。

default: 访问控制的成员或外部类可以被相同包下的其他类访问

本类中:直接通过成员变量名访问

同包的子类中:直接通过成员变量名访问

同包的其他类:可以通过成员变量方式直接访问

不同包的类(包括子类)中:不能直接通过直接和对象.属性 任意一种访问

在这里插入图片描述

三、protected(子类访问权限):

如果一个成员(包括成员变量、方法和构造器等)使用protected访问控制符修饰,那么这个成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。

在通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法。

本类中:直接通过成员变量名访问

同包的子类中:直接通过成员变量名访问

同包的其他类:可以通过成员变量方式访问

不同包的子类:直接通过成员变量名访问

不同包的类中:不能直接通过两种方式中的任意一种访问(1.对象.成员变量
2.成员变量)

在这里插入图片描述

在这里插入图片描述

四、public(公共访问权限):

这是一个最宽松的访问控制级别,如果一个成员(包括成员变量、方法和构造器等)或者一个外部类使用public访问控制符修饰,那么这个成员或外部类就可以被所有类访问,不管访问类和被访问类是否处于同一个包中,是否具有父子继承关系。

类的访问修饰权限就两种:public 和缺省。这里不包含内部类结构。

在这里插入图片描述
总结封装性:java提供了四种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性大小


http://chatgpt.dhexx.cn/article/d1U7ZKo9.shtml

相关文章

访问修饰符 [详解]

可能一下子会想到private、default、protected、public这四个,但如果问"static、abstract等是不是访问修饰符呢?" 这就不清楚了,所以下面研究前四个及再补充其他的 1、当前已知的 过一眼就行,毕竟后面会重新研究 1.1 范围从大到小排序是:public>protected>默…

四种访问修饰符

Java中修饰符分为两种:访问修饰符和非访问修饰符。修饰符中,有一些修饰符可以既可以修饰类,也可以修饰方法,但是有一些修饰符只能修饰符方法。 今天这篇文章先介绍一下四种访问修饰符。 1、private修饰符 private表示私有的。既…

JAVA的四种访问修饰符

JAVA中的访问修饰符,主要用于设置类、属性、方法的访问级别,有以下四种: 修饰符同一个类同一个包子类任何地方public(公共的)YYYYprotected(受保护的)YYYdefault(默认的)YYprivate(私有的)Y 1…

特征工程—数据无量纲化之归一化

在sklearn中使用preprocessing预处理与impute缺失值处理,两个模块进行数据预处理 数据无量纲化:将不同量纲的数据转化到同一区间,避免某一取值的数据范围太大或太小对影响计算,加快求解速度,提高精度 无量纲化包括线…

数据挖掘的步骤——降维处理前一定记得进行无量纲化处理

数据挖掘的步骤 我们使用sklearn进行虚线框内的工作(sklearn也可以进行文本特征提取)。通过分析sklearn源码,我们可以看到除训练,预测和评估以外,处理其他工作的类都实现了3个方法:fit、transform和fit_tra…

#第27篇分享:数据无量纲化(python语言:sklearn 预处理及特征工程)(3)

#数据挖掘五大流程:获取数据,数据预处理 (更改数据类型,有噪声,有缺失),特征工程 (归一化,标准化,正则化,降维),建模&…

均值归一化_数据无量纲化处理(归一化VS标准化)

常见的无量纲化处理方法主要有极值化、标准化、均值化和标准差化方法,而最常使用的是标准化方法。 标准化方法处理后的各指标均值都为0,标准差都为1,它只反映了各指标之间的相互影响,在无量纲化的同时也抹杀了各指标之间变异程度上的差异,因此,标准化方法并不适用于…

特征工程:特征预处理(无量纲化处理)

文章目录 一、解释二、归一化三、标准化★一、解释 特征预处理API sklearn.preprocessing为什么要做归一化/标准化? 无量纲化 特征的单位或者数量相差较大,这样某特征会‘绝对’最终结果,使得其他算法无法学习到其他特征。 二、归一化 将原始数据进行变换将数据映…

为什么梯度的负方向是梯度下降最快的方向

文章目录 梯度与导数的关系梯度下降算法梯度方向是上升方向一阶泰勒展开式与负梯度 梯度与导数的关系 梯度方向指向数值增长最快的方向,大小为变化率。通过这个性质也说明梯度是有方向和大小的矢量。通过梯度的定义我们发现,梯度的求解其实就是求函数偏…

数字图像处理 基于matlab、opencv计算图像的梯度方向和梯度幅值

一、图像的梯度 1、简述 图像可以被视为标量场(即二维函数)。 通过微分将标量场转换为矢量场。 梯度是一个向量,描述了在x或y方向上移动时,图像变化的速度。我们使用导数来回答这样的问题,图像梯度的大小告诉图像变化的速度,而梯度的方向告诉图像变化最…

梯度方向直方图Histogram of Oriented Gradients (HOG)

在学习HOG特征的时候,发现一片英文文章讲得浅显易懂。因此翻译在这里学习。(文中的图片均来自翻译原文) 原文链接:Histogram of Oriented Gradients 什么是特征描述子 特征描述子一张图片或者一个图片块的一种表示,通过提取有用信息并扔掉…

为什么梯度方向一定是函数增大的方向

全微分的定义 如果函数在区域D内各点处都可微分,那么称这个函数在D内可微分。 以上就是为了解释一下为啥 f ( x Δ x , y Δ y ) − f ( x , y ) f x ′ f(x\Delta x, y\Delta y)-f(x, y)f_{x}^{} f(xΔx,yΔy)−f(x,y)fx′​△x f y ′ f_{y}^{} fy′​△y …

为什么沿梯度方向,函数变化最快???

很多时候,我们时间有限,对一些知识只能不求甚解,但这这些不求甚解的知识又会很困扰我们,总想着原理是啥,为啥这样做。就比如我们学梯度下降时,都知道梯度下降是机器学习、深度学习的核心优化算法&#xff0…

机器学习算法篇:从为什么梯度方向是函数变化率最快方向详谈梯度下降算法

前言:若需获取本文全部的手书版原稿资料,扫码关注公众号,回复: 梯度下降法 即可获取。 原创不易,转载请告知并注明出处!扫码关注公众号【机器学习与自然语言处理】,定期发布知识图谱,自然语言处…

⚡可行梯度方向法⚡(Feasible Gradient Direction Method ,FGDM)

⚡最近很烦⚡ 有一阵子没更新了,感觉整个暑假被忽悠了,六月份找Boss指明了一个Direction,然后整个暑假都在忙于补充Proposal相关的Knowledge,但是,被忽悠局局长Boss给忽悠了(谁人能明白其中的难受&#xff…

梯度方向为何变化率最大

梯度(本质上是一个向量)是机器学习里面的重要基础,借助梯度下降才能最小化损失函数,逐步更新网络参数,得到最佳的函数表示。梯度方向的变化率最大,沿着梯度的反方向,可以最大效率的降低损失函数。在对梯度的…

梯度下降算法过程及为什么负梯度方向是下降最快方向(附代码)

对于梯度下降算法我们熟知的一个例子就是下山问题,当我们位于山的某一点处,沿着当前位置寻找山坡最陡方向以一定步长进行移动,直到走到山脚。那么这个过程具体是怎么做到的?为什么说负梯度方向是下降最快方向呢? 首先…

微积分:如何理解方向导数与梯度?

文章目录 前言方向导数梯度方向导数公式的证明 前言 前文介绍了多元函数微分的实质,接下来介绍多元函数中的方向导数与梯度,以二元函数为例 方向导数 方向导数的实质:自变量沿着xoy平面上的某个方向变化时,f的变化率&#xff0…

Opencv中计算梯度、梯度幅值以及梯度方向的相关函数

在进行图像处理中,经常会计算图像的梯度、梯度幅值以及梯度等,对于不太了解opencv的,可能会自己写计算梯度、梯度幅值和梯度方向的函数,其实这些工作OpenCV都已经为我们做了。下面来看看Opencv中的相关函数: 1&#xf…

梯度方向,梯度下降法,牛顿法

梯度、等高线切线、方向导数 一、直观理解梯度方向与等高线的切线方向垂直 二、方向导数梯度是函数上升的方向,且在该方向上的方向导数最大 三、从泰勒级数展开来看四、牛顿法五、梯度下降与牛顿法的区别 一、直观理解 梯度方向与等高线的切线方向垂直 假设一函数为…