java 16:可见性修饰符及单例模式

Java的protected关键字的可见性 修饰符private、protected、public都称为可见性修饰符(visibility modifier)或可访问性修饰符(accessibility modifer),因为它们指定如何访问类和类的成员。 相信很多朋友都对private、public这两个修饰符很熟悉了,本文重点讨论一下关于protected修饰符的可见性。...... 阅读详情

可见性修饰是用来修饰一个方法中的数据域跟方法能否在类之外被使用。

You can use the public visibility modifier for classes, methods, and data fields to denote that
they can be accessed from any other classes. If no visibility modifier is used, then by default
the classes, methods, and data fields are accessible by any class in the same package. This is
known as package-private or package-access.

In addition to the public and default visibility modifiers, Java provides the private and
protected modifiers for class members. This section introduces the private modifier. The
protected modifier will be introduced in §11.13, “The protected Data and Methods.”
The private modifier makes methods and data fields accessible only from within its own class

也就是说,用public修饰的能够在其他类外的地方使用到,当没有使用可见性修饰符时候,默认的就是该域可以在同一个包下的类中使用到,当使用了private修饰时候,就只能在类内使用了。出了类,其他地方都是见不到的,访问不了的。如下所说:


要注意,可见性修饰是为了在类外的其他类中能否访问到该类,如果类是public的,那么能否访问到该类中的数据域,方法。而这些可见性修饰在本身类中的使用时完全没区别的。

<span style="color:#ff0000;">public</span> class Foo
{
	<span style="color:#ff0000;">private</span> boolean x;
	
	public static void main(String [] args)
	{
		Foo foo=new Foo();
		System.out.println("foo.x"+<span style="color:#ff0000;">foo.x</span>);
		foo.x=true;
		System.out.println("foo.covert()="+<span style="color:#ff0000;">foo.convert</span>());
		
	}
	<span style="color:#ff0000;">private</span> int convert()
	{
		return x?1:0;
	}

	
}


但是在类之外的一个类中要去使用它,那么就会有问题。如下:

public class Test
{
	public static void main(String [] args)
	{
		Foo foo=new Foo();//可以,因为Foo类用public修饰
		foo.x=true; //不行,访问不到
		foo.convert(); //不行,访问不到
	}
}

The private modifier applies only to the members of a class. The public modifier can apply
to a class or members of a class. Using modifiers public and private on local variables would
cause a compile error.

要注意的是,private 只能用来修饰类中的成员,而不能用来修饰类。另外,在局部变量(例如方法中使用的变量)是不用加可见性修饰的,如果在局部变量中使用public,private等修饰符是会出现编译错误的,可见性修饰是针对类,类的成员的。

单例模式的实现

In most cases, the constructor should be public. However, if you want to prohibit the user from
creating an instance of a class, use a private constructor. For example, there is no reason to create
an instance from the Math class, because all of its data fields and methods are static. To prevent
the user from creating objects from the Math class, the constructor in java.lang.Math is
defined as follows:
private Math() { 
}

一般情况下,我们可见性修饰是为了类中的数据域被类外恶意进行修改,但是一般都不会阻止在类外创建某个类的对象,所以,一般情况下,我们的构造函数是public的,但是,如果有些情况下,你不想某个类在类外被创建各种各样的对象。你可以使用private来修饰构造函数,这样的话,这个构造函数就不能被类外所见了,就像Math方法,他的所有方法跟数据域都是static,那么根本就没有使用对象的必要。所以他会将他的构造函数用private修饰

在这里顺便说一下,设计模式中很重要的一个模式-单例模式,有时候为了线程安全,为了节省系统资源,如果不是需要很多的对象。可以让一个类只有一个对象。

他的实现方式有很多,将构造函数用private修饰就是一种:如下:

  public class Singleton {
    private final static Singleton INSTANCE = new Singleton();
 
    // Private constructor suppresses   
    private Singleton() {}
 
    // default public constructor
    public static Singleton getInstance() {
        return INSTANCE;
    }
  }


javascript的oop思想以及单例,工厂,观察者模式简例 主要是对javascript的面向对象思想的一个理解,有简单的单例模式,工厂模式,观察者模式含代码。 立即下载

相关推荐

golang 线上事故

golang 线上事故 最近公司要做大促的一些活动。并且单量,qps持续上涨。之前使用的是django python 语言做的一个服务端。目前已经部署的国家里面最多的国家会有300+个实例。大促期间还可能会增加一个实例数。这么多的实例部署,回滚的时间都会特变长,除了问题也不好定位。并且如此多的一个机器,连接数* 实例数也会导致DB等其他服务扛不住这么大的并发。所以决定上go服务解决性能问题。 ...

lcf枫的博客 1537

java篇 类的进阶0x06:可见性修饰符(访问修饰符)

(虽然在构造器中也可以加过滤语句,但实际上调用构造器时,已经在建造实例了,也已经创建出来了,只是在赋值时作过滤,而如果是在静态方法中作过滤,则直接就不会去调用构造器去生成非法实例)就意味着外面的代码可以使用这个方法,也就意味着你不能再对这个方法随意更改,比如不应该更改方法的签名、返回值(但可以优化方法体内的代码逻辑),因为一旦修改,可能外面的代码就可能要跟着修改,否则会出现错误。文件同时包含一个公共类与多个非公共类),在 IEDA 中将鼠标定位到哪个类右键,就可以选择执行相应类的 main 方法。

Kevin 的博客 818

[官方培训]07-UE材质基础 孙丹璐 Epic 笔记

勾选允许自定义深度写入再在模型上勾选然后可以通过Scene Texture节点拿到渲染的自定义深度信息,有了自定义深度信息就可以与当前渲染的像素深度进行对比,自定义深度信息存放的是最靠近我们的深度,如果当前像素离自定义深度比较远我们就不要这个像素。效果如下这种方案的缺点也很明显,因为这样看不到第二层的透明了,如果是两层的半透明的裙摆,这样就看不到第二层的裙摆了。对于半透明排序问题最根本能解决的还是光线追踪,ue5中又加入了OIT(基于像素的排序)。官方透明材质的理解和应用。

Tcohneyn的博客 1562

JAVA 控制可见性的4个访问修饰符

Java共有四种控制可见的访问修饰符,分别是: 1.public:任何类都可见。 public class test1{ public static void main(String []args){ Polaris polaris=new Polaris(); polaris.hello(); } } class Polaris{ public void hello(){ System.out.println("Hello!");

qq_48596586的博客 1807

从宏观到街道:如何利用七普数据为WorldPop人口栅格做“本地化”校准?

本文探讨了如何利用第七次全国人口普查(七普)数据对WorldPop人口栅格进行本地化校准,以提高街道级别的人口分布精度。通过分析数据偏差、选择适当的技术路线和工具(如Arcgis和栅格计算器),文章详细介绍了从宏观到街道的校准实践,帮助规划公共卫生资源和优化城市基础设施。

janckywong963的专栏 513

ROS2前置基础教程 | 使用CMakeLists.txt编译ROS2节点

答案是有的,那就是cmake工具。cmake通过调用CMakeLists.txt直接生成Makefile。 2.新建CMakeLists.txt 在新建,输入下面内容。 3.编译代码 我们一般会创建一个新的目录,运行cmake并进行编译,这样的好处是不会显得那么乱。 创建好文件夹,接着运行cmake指令,代表到上级目录找。 运行完cmake你应该可以在build目录下看到cmake自动生成的Makefile了,接着就可以运行make指令进行编译 运行完上面的指令,就可以在build目录下发现节点了。ROS2

生活不止眼前的苟且 1万+

Java基础——可见性修饰符

1. 简介 2. public 3. protected 4. 默认修饰符 5. private 6. 总结 1. 简介 可见性修饰符可以用于确定一个类以及他的成员的可见性 2. public 可以在类、方法、数据源前使用public修饰符,表示他们可以被任何其他类访问。 3. protected 允许子类访问父类中的数据域或方法,但不允许非子类访...

Littlemotor 6107

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 308

Java用于控制可见性的4个访问修饰符

仅对本类可见一 private 对所有类可见一 public 对本包和所有子类可见一 protected 对本包可见一 默认,不需要修饰符。

樱之梦川的博客 255

数字IC后端时钟树综合实战:OCC电路优化与时钟树平衡策略

本文深入探讨了数字IC后端设计中时钟树综合的关键挑战,重点分析了OCC电路时钟树优化的必要性。通过实战案例,详细阐述了如何通过手动干预、时钟分组与分段长树等策略,避免工具自动平衡导致的时序违例和资源浪费,从而有效实现时钟树平衡并提升设计质量。

weixin_29306261的博客 330

【OpenClaw从入门到精通】第19篇:OpenClaw电商实战:从零搭建比价+库存监控+自动调价全自动化系统(2026实测附完整代码)

2026年OpenClaw成为全球最火开源项目,电商行业因其场景高频、数据标准化成为其核心落地领域。本文针对电商从业者面临的比价繁琐、库存混乱、调价滞后三大痛点,基于OpenClaw的“接入层-执行层-决策层”三层架构,从零拆解智能比价、多平台库存监控、动态自动调价三大核心场景的实现逻辑。文中包含完整的环境配置、技能安装、代码实现(含Python脚本与YAML配置)、执行结果验证,同时补充关键算法原理与避坑指南,兼顾新手入门与进阶提升。读者可直接参考本文实操流程,快速搭建属于自己的电商自动化系统,实现7×2

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2239

⭐Java修饰符

访问--决定了它们。

m0_74977981的博客 824

一个代码循环计算水在石墨烯表面的接触角

石墨烯接触角

Rockyoung 2578

Kotlin语言(3)- 函数的可见性修饰符

当在一个类前面声明了data关键字时,就表明你希望这个类是一个数据类,Kotlin会根据主构造函数中的参数帮你将equals()、hashCode()、toString()等固定且无实际逻辑意义的方法自动生成、从而大大减少了开发的工作量。protected关键字在Java中表示对当前类、子类和同一包路径下的类可见,在Kotlin中则表示只对当前类和子类可见。public修饰符的作用虽然也是一致的,表示对所有的类都可见,但是在Kotlin中public修饰符是默认项,而在Java中default才是默认项。

qq_48824303的博客 299

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

每日一练5:java类修饰符详解

在前面的文章中,已经了解了java面向对象的核心概念。本文将具体分析类的定义,重点分析和使用java类的访问修饰符public、protected、default、private。 一、类的定义 class 类的名称{ 修饰符【public|protected| default |private |static|final】数据类型 成员变量; 修饰符 【public|protected| default|private| static|final】返回值的数据类型 方法名称(数据类型...

zqyoncemore的专栏 319

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 入门指南:非访问修饰符

在Java中,非访问修饰符(也称为非权限修饰符)主要用于控制类、方法或变量的特定行为,而不是访问级别。这些修饰符不改变成员(变量、方法或类)的可见性,而是影响它们的使用方式、存储方式或执行方式。

热带鱼的技术博客 1378

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java 访问控制修饰符自我理解

访问控制修饰符关键字 在java中,我们知道有4种用于访问控制的修饰符,分别是public , protected, default 以及private。 public: 可以用于修饰类,接口,变量和方法。当一个类,接口,变量或者方法被指定为该类型修饰时, 在同一项目下的所有类(不再同一包或者在同一个包下均可)都可以访问该类,该接口,该变量或该方法, 但对于方法和变量而言,要保证它们所在的类能够被访问,它们才能被访问。 protected: 用于修饰变量和方法,不能修饰外部类。当一个方法或者变量被申明为该

UESTC Like 928

6 包,单例模式,访问修饰符(public、protected,private)Object String

1. 接口中所声明的方法都是抽象方法。接口中的方法都是 public 的。 2. 接口中也可以定义成员变量。接口中的成员变量都是public、final、static的。 3. 一个类不能既是 final,又是 abstract 的。因为 abstract 的...

chunhuo3827的博客 254

Kotlin学习日记(4)数据类、单例类、可见性修饰符、高阶函数

/ 基本数据类定义数据类必须满足的条件:主构造函数至少有一个参数主构造函数的参数必须是val或var不能是抽象类、开放类、密封类或内部类数据类:使用data class定义,自动生成常用方法,简化数据存储单例类:使用object关键字定义,确保唯一实例;伴生对象提供类级别的功能可见性修饰符:控制访问范围,privateprotectedinternalpublic满足不同封装需求高阶函数:接收或返回函数,结合 lambda 表达式实现灵活的函数式编程,标准库提供丰富实现。

m0_61459255的博客 540

java个修饰符作用域

Java访问修饰符及其作用域 在Java编程语言中,访问修饰符是一种关键字,用于指定类、接口、方法和变量的访问权限。正确使用访问修饰符可以提高代码的封装性、安全性和可维护性。本文将详细解释Java中的四种访问修饰符:public、private、protected和默认(无修饰符),并通过代码示例和关系图来展示它们的作用域...

weixin_41788814的博客 188

Java修饰符

Java修饰符 1、类的修饰符分为:可访问控制符和非访问控制符两种。 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract ;最终类修饰符 final 1 )公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的。每个 Java 程序的主类都必须是 public 类作为公共工具供其它类和程序使用的应定义为 publi...

xiaozhizzzzzzz的博客 440

Java 接口,修饰符的总结

Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实例化,但是可以被实...

weixin_42530700的博客 670

7-16-关键字、修饰符的使用

目录 关键字 super this 修饰符 类修饰符 访问修饰符 非访问控制符 方法修饰符 访问控制修饰符 非访问控制符 变量修饰符 访问控制修饰符 非访问控制符 关键字 super 定义:super关键字代表的是父类空间的引用。(并不能代表对象,只是代表一个对象中的一块内存而已) 使用场景: 在继承关系的前提下,但构造方法不会被继承,子类会默认调用父类的...

积极面对生活,快乐学习 271

Java修饰符,抽象类

final修饰符 final主要用法有以下四种: 一、用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时、构造方法或者初始化块中对它赋值; 1. public class FinalMemberVariables { 2. // final 修饰的实例变量 3. // 必须在非静态初始化块、声明该实例变量或构造器中指定初...

weixin_42530700的博客 2056

java protected修饰符说明

1. 简介 对protected修饰符进行阐述,结合Object类的clone方法进行说明。其中clone方法如下:protected Object Object.clone(); 关于protected修饰符的访问权限如下: 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问; 子类与基类不在同一包中:那么在子类中,子类...

weixin_30298497的博客 138

详解java:static 修饰符

static 修饰符一、简述1.1 static是静态修饰符1.2static 修饰符1.2.1静态变量:1.2.2静态方法:二、应用2.1 访问语法2.2 代码示例 一、简述 1.1 static是静态修饰符 static是静态修饰符,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。 static修饰的成员可以通过类名加“.”进行直接访问。 static表示“

qq_47346664的博客 1842
上一篇: java 15:静态变量,方法,常量
下一篇: java 17:数据域封装
dymom
博客等级 码龄17年 42粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值