Java-访问修饰符

article/2025/9/9 15:00:39

目录

一、private(私有权限)

二、default(默认权限)

三、protected(受保护权限)

​四、public(公共权限)

五、总结

示意图 

private(default)protectedpublic
本类YesYesYesYes
同包的类NoYesYesYes
不同包的父子关系NoNoYesYes
不同包的非父子关系NoNoNoYes

注意点:外部类只能由public或不写修饰符(default)修饰。

一、private(私有权限)

1、可以修饰成员属性构造方法(若是修饰了构造函数,且构造函数只有一个,则该类不能在外部类创建对象,或者被其他类继承(因为继承时,会先调用父类的构造函数),其他修饰符按照各自修饰范围限制)成员方法内部类,不能修饰外部类。

2、被private修饰的成员,只能在定义它们的类中使用(也就是定义类的{},大括号里面),在其他类中不能访问。

二、default(默认权限)

默认不写修饰符,就是默认权限,不能主动写default关键字,否则编译器会报错。

1、成员属性构造方法成员方法都能使用默认权限,只需不写任何修饰符关键字即可。

2、默认权限即同包权限,同包权限只能由本类以及同包的类访问。

三、protected(受保护权限)

1、可以修饰成员属性构造方法成员方法内部类

2、被protected修饰的成员,能在定义它们的类或同包的类被访问。

3、如果有不同包的类想访问调用它们,那么这个类必须是定义它们的类的子类。(在该类的{}中,通过this或者创建该类的对象访问它们,不能通过创建定义类对象访问)。

如下图,Test类的msg成员属性被protected修饰符修饰,

不同包下的Red想要访问msg属性,则只能通过继承Test类,然后通过this.msg访问,或创建Red对象red,通过red.msg访问。

在Red类中,创建Test对象test,不能通过test访问msg。

四、public(公共权限)

1、可以修饰成员属性构造方法成员方法

2、被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。

五、总结

判断是否可访问成员的逻辑:

类A若想通过对象(类B或类B的子类)访问类B的成员,先判断对象是否拥有该成员(例如对象类型是类B的子类,子类是否能正常继承类B的成员),若是对象拥有该成员,则根据成员的修饰符、类A与类B(定义成员的类)的关系(是否在同一个包、是否是父子关系等)判断是否可访问该成员。

例如类A中,通过创建类C(继承了类B)对象c访问类B的成员msg,因为类B的msg属性修饰符为protected,所以类C能继承类B的msg属性,且类A和类B在同一个包中,符合protected的要求,所以在类A中,能通过c访问msg属性。

假设将类A移到类C包中,没与类B在同一个包中,且类A没继承类B,则不符合protected的要求,所以无法通过c对象访问msg属性。

如想访问到类B的msg属性,只能与类B同一个包,或者继承类B,在类A中通过this.msg或者创建类A的对象访问msg属性。

参考

Java访问修饰符全面详细介绍_努力努力再努力c.的博客-CSDN博客_java访问修饰符


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

相关文章

C# 的访问修饰符

访问修饰符的作用域分为三种: 类的访问修饰符方法的访问修饰符属性的访问修饰符 访问修饰符主要分为: public (公共的)protected (保护的)internal (内部的)private (私有的) 一,类的访问修饰符 默认的是 internal 二,方法的…

c# 访问修饰符

C# 中提供了 6 种访问修饰符:public、private、protected、internal、protected internal、private protected。   访问修饰符 在所有的类型和类型成员中都具有可访问性级别,用于控制是否可以从程序集或其他程序集中对其他代码的访问控制。 访问修饰符…

访问控制修饰符

定义理解 对类、变量、方法、接口的访问范围限制。一.类修饰符 1.直接声明 class 类名{ },即不加修饰符的时候 这种情况下,只可访问同一包中的类,不可访问不同包中的类。2.public,公共类的修饰符 这种情况下,既可访…

Java访问修饰符全面详细介绍

Java中有四种权限修饰符,其在同一项目中所对应的访问权限如下: 注意:默认不写即是default,而不是自己还特意加上default关键字。 Java语言有4种访问权限修饰符,下面按照权限从小到大的顺序对4种访问权限分别介绍: 1、…

Java基础:Java中四种访问修饰符

一、背景。 这篇文章主要介绍了Java中四种访问修饰符详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。放假在家里休息,闲来无事,想巩固巩固自己的基础知识…

C#的5种访问修饰符

C#的5种访问修饰符 1、public 公共的 public 允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员都可以被外部的类访问。 class Person {public string name;public int age;public void SayHello(){Console.WriteLine("大家好,我叫{0}&a…

C#访问修饰符

C#中的访问修饰符有以下六种: public:同一程序集和和引用该程序集的所有代码都可访问。public成员可访问级别由该类型本身的级别决定。private:只有同一类中的成员可以访问protected:同一类和派生类中的代码可以访问internal&…

java的四个访问修饰符_Java中的四种访问修饰符

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

四种访问修饰符详解

有四种访问修饰符规定了定义的属性和方法能访问的区域 private关键字 用private关键字修饰的属性和方法只能在该类的大括号内访问,出了这个类就不能被访问了。当一个子类继承一个父类的属性和方法时,若父类的属性或方法被private修饰,那么子…

Java中的访问修饰符

JAVA中的访问修饰符,主要用于设置类、属性、方法的访问级别,有以下四种: 在编写代码的时候,如果没有特殊的考虑,建议这样使用权限: 成员变量使用private,隐藏细节构造方法使用public&#xff0…

java四种访问修饰符

访问修饰符 public,private,protected,以及不写(默认)时的区别: 定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 分类: private : 在同一类内…

访问修饰符 [详解]

可能一下子会想到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为什么要做归一化/标准化? 无量纲化 特征的单位或者数量相差较大,这样某特征会‘绝对’最终结果,使得其他算法无法学习到其他特征。 二、归一化 将原始数据进行变换将数据映…

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

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