private 与构造函数

只要写了带参构造函数则不会再生成无参构造函数,不管该带参构造函数是否是private的 如果写了带参构造函数,即使该带参构造函数是private的,直接new对象不传参数时也会报错,需要写出public的无参构造函数时才可以直接new对象不传参数。即只要写了带参构造函数则不会再生成无参构造函数,不管该带参构造函数是否是private的。 1 下面两种都报错 package com.company; /** * Title: * * @Author * @Create... 阅读详情



private :私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。私有只在本类中有效。


将age私有化以后,类以外即使建立了对象也不能直接访问。
但是人应该有年龄,就需要在Person类中提供对应访问age的方式。


注意:私有仅仅是封装的一种表现形式。

之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。

对访问的数据进行操作。提高代码健壮性。


class Person{
	private int age;
	public void setAge(int a){
		if(a>0 && a<130){
			age = a;
			speak();
		}
		else
			System.out.println("feifa age");
	}

	public int getAge(){
		return age;
	}
	private void speak(){
		System.out.println("age="+age);
	}
}

class PersonDemo{
	public static void  main(String[] args){
		Person p = new Person();

		//p.age = -20;
		p.setAge(-40);
		//p.speak();
	}
}



构造函数

一、构造函数的作用:可以用于给对象进行初始化。对象一建立就会调用与之对应的构造函数。


二、构造函数的小细节:
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
当在类中自定义了构造函数后,默认的构造函数就没有了。

三、构造函数与一般函数的区别?


 (1)构造函数和一般函数在写法上有不同。

 (2)在运行上也有不同。
构造函数是在对象一建立就运行。给对象初始化。
而一般方法是对象调用才执行,给是对象添加对象具备的功能。

 (3)一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。


 四、
什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。

 五、构造代码块。
class Person
<span style="white-space:pre">	</span>private String name;
	private int age;
	
	/*
	构造代码块。
	作用:给对象进行初始化。
	对象一建立就运行,而且优先于构造函数执行。
	和构造函数的区别:
	构造代码块是给所有对象进行统一初始化,
	而构造函数是给对应的对象初始化。

	构造代码快中定义的是不同对象共性的初始化内容。

	*/
	{
		//System.out.println("person code run");
		cry();
	}

	Person(){
		System.out.println("A: name="+name+",,age="+age);
		
	}
	/**/
	Person(String n){
		name = n;
		System.out.println("B: name="+name+",,age="+age);

		//cry();
		
	}
	/*
	public void setName(String n){
		name  = n;
	}
	public String getName(){
		return name;
	}
	*/
	Person(String n,int a){
		name = n;
		age = a;
		System.out.println("C: name="+name+",,age="+age);
		//cry();
	}

	public void cry(){
		
		System.out.println("cry......");
	}
}

class  PersonDemo2{
	public static void main(String[] args) {
		Person p1 = new Person();

		

		Person p2 = new Person("lisi");
	
		//System.out.println(p2.getName());

		//Person p3 = new Person("wnagu",10);
	
		
	}
}


六、一个类中默认会有一个空参数的构造函数,这个默认的构造函数的权限和所属类一致。
如果类被public修饰,那么默认的构造函数也带public修饰符。如果类没有被public修饰,那么默认的构造函数,也没有public修饰。默认构造构造函数的权限是随着的类的变化而变化的。








构造函数定义为private或者protected的好处 从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“内部”的其他函数可以调用之。而对于private的函数,只能被本类“内部”的其他函数说调用 立即下载

相关推荐

MS1861宏晶微视频显示与控制器芯片:开发资料全解析与应用指南

本文全面解析了宏晶微MS1861视频显示与控制器芯片的核心功能与开发流程。该芯片作为高性能的“视频信号翻译官”,支持HDMI、LVDS等多种输入与MIPI、LVDS等输出,集成强大的图像处理与OSD叠加功能。文章详细介绍了从资料获取、环境搭建到以HDMI转MIPI为例的实战配置与调试技巧,为工业HMI、广告机等应用的开发者提供了完整的应用指南。

weixin_29198045的博客 337

private与构造函数

噢,刚才我们刚刚提到了static公有成员,它是独立于class对象而存在的,当然,它也是公有的,“我们”可以访问得到。),我们可以在class的私有域中添加一个static类型的计数器,它的初值置为0,然后再对makeAnObject()做点手脚:每次调用它时先检查计数器的值是否已经达到对象个数的上限值,如果是则产生错误,否则才new出新的对象,同时将计数器的值增1.最后,为了避免值复制时产生新的对象副本,除了将构造函数置为私有外,复制构造函数也要特别声明并置为私有。噢,你一定想到了使用友元,完全正确。

m0_45190002的博客 816

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港 前脚刚走,后脚又来,山姆大叔又来刷存在感,2020年7月28日,USS Ronald Reagan流窜在我国东海海区被卫星拍了下来: 2020年8月1日,最新卫星图像显示USS Ronald Reagan已经返回母港日本横须贺:距离其出港(2020年6月8日)已经过去了快两个月 然而事情并没有到此结束,“America”级#两#栖#攻#击#舰#(LHA-6)选择在 “八.一” 这个特殊的日子前后出港颇具挑衅的味道。 根据2020年

qq_46071146的博客 1565

构造函数设置为private,会怎样。

构造函数设置为private,会怎样? 1.无法静态的创建对象了,即不能通过 A a这种方式创建对象了。只能通过在类的内部的静态成员函数中new一个对象(动态的创建对象)。 #include <iostream> using namespace std; class A{ private: A(){ ; } public: static A* get(){ A* a1 = new A(); return a1; } ~A(){ ; } }; int ma..

init_bin的博客 3230

均匀分布产生高斯分布

均匀分布产生高斯分布 文章目录均匀分布产生高斯分布简介方法和证明代码效果引用 简介 方法和证明 代码 效果 引用

gy_Rick的博客 5317

安卓设备通过USB串口与STM32单片机通讯之一

这里写自定义目录标题欢迎使用Markdown编辑器`在这里插入代码片`新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器在这里插入代码片 你好下Markdown的基本语法知识。 新的改变 我们对

JGB联合商务组的博客 7245

C++构造函数/析构函数 设置成private的原因 及引用作为函数返回值的四种形式分析

C++构造函数/析构函数 设置成private的原因: 将构造函数,析构函数声明为私有和保护的,那么对象如何创建? 已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法??? 提出这个问题,说明你已经对c++有所思考了。 从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“

longlovefilm的博客 1422

波分复用技术原理

波分复用原理 把不同波长的光信号复用到同一根光纤中进行传送,这种方式我们把它叫做波分复用( Wavelength Division Multiplexing ) 一根光纤被划分为多个波道,多个波长以一定的间隔隔开,在光纤中独立传输。 波分复用应用演示 如果将WDM系统看作交通系统,光纤可以看作是多个车道的公用道路。 各种类型的业务就像货物一样,被打包装载到车辆中。 车辆按照分配的车道行驶至目的地,完成货物的运输。 想要提高波分复用系统的传输容量,就要增加波道数量或是提升单波传...

m0_63251770的博客 9997

构造函数权限为private怎么创建对象

构造函数权限不要求一定是public,但是非public的函数无法类外调用从而创建对象。通过公共权限的静态函数可以实现创建对象。

YanHS_的博客 1125

C#量化交易的市场数据采集与分析:从0到1构建你的‘数据雷达’——对比5大神器,代码实战全解析!

数据是量化交易的‘氧气’,而好的数据采集与分析是你的‘呼吸机’!本文5大神器+代码实战,总有一款适合你!(本文代码均经过测试,但请根据实际需求调整!

java专栏 732

具身智能(40):主流 VLA 模型π₀

摘要: π₀是首款专为机器人设计的VLA(视觉-语言-动作)端到端基础模型,通过双阶段训练实现“感知-决策-执行”闭环。其创新点包括:1)FlowMatching技术实现连续平滑动作控制(精度0.3°);2)结合VLM预训练与多机器人实操数据,零样本任务完成率达76.4%,远超同类模型;3)支持模糊指令理解与动态场景适应(如遮挡识别)。开源版本涵盖不同规模模型,适用于工业装配、服务机器人等场景,在延迟(213ms)和稳定性(92%自主恢复率)上显著领先OpenVLA等竞品。

码农17年的博客 510

C++基本概念总结——构造函数的public/protected/private语义

构造函数的public/protected/private语义

Tony的博客 627

YOLO 系列专栏(二十九)YOLO26 × StarNet 轻量化涨点方案(CVPR 2024)轻量化、主干改进篇 | 星星卷积虽小,却蕴藏着巨大的高效潜力

StarNet 出自 CVPR 2024 轻量化主干网络工作,核心创新是,依靠逐元素乘法实现高阶特征融合,在几乎不增加参数量与 FLOPs 的前提下,大幅提升特征表达能力,天然适合等多任务统一建模。本文将 StarNet 完整替换 YOLO26 原有主干,保留 YOLO26 无 NMS 检测头与轻量化结构,实现,并提供。

qq_36130719的博客 410

C++构造函数是否可以定义为private

思考下:什么时候构造函数需要定义为private? 1,如果一个类的构造函数只有一个且为private,这是可以编译通过的; class Parent { private :     Parent()     {         cout     } }; 2,如果一个类的构造函数只有一个且是private,如果类的内部没有专门创建实例的代码,则是无法创建任何实例的

zzhays的专栏 1万+

Camera2Demo

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

构造函数、访问权限private

一、构造函数

fanluwei_jack的专栏 1506

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C++中构造函数或析构函数定义为private

C++中构造函数或析构函数定义为private

xxxtlxxx的博客 2937

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

构造函数必须是public吗_谈谈 constructor 的private和public

class TestClass { http: Http; constructor(http: Http){ this.http = http; } } 公有,私有于受保护的修饰符默认为 public在上面的例子里,我们可以自由访问程序里定义的成员,在TypeScript里,成员默认为public,你也可以明确的将一个成员标记成public。class Animal { ...

weixin_39689377的博客 2788

构造函数能放在private关键字中吗

今天在写c++类的构造函数时遇到了一个小小的bug。

weixin_48336920的博客 708

java构造函数之private,protected

通常构造函数是public的, 今天无意间写了一个default的构造函数, 在另外一个包里面使用的时候居然发现The constructor is not visible,于是有了兴趣, 试验发现private, protected都是not visible.回去翻书《Thinking in java》关于构造函数那一节也没有讲。写了几个例子,发现构造函数也遵循普通函数的访问机制, 即:

sunxing007的专栏 9434

c++ ,protected 和 private修饰的构造函数

protected 和 private修饰的构造函数:连接 1. 在类的外部创建对象时,不能调用protected或private修饰的构造函数。 2.当子类中的构造函数调用父类的private构造函数时会错,当子类中的构造函数调用父类中的 public或protected构造函数时是对的 1 #include <iostream> 2 using namesp...

weixin_30776863的博客 246

构造函数和析构函数可以在private中吗?

构造函数和析构函数不是一定不可以放在private中,构造函数和析构函数与普通的成员函数没什么太大的本质差别,只要我们不去调用,就不会发生问题,但是这样做并没有什么实际价值,我们一般还是将构造函数和析构函数放在public中来自动调用。

谁以何定义完美 523

把构造函数设成private

在C++11中,把构造函数设成private, 提供静态的MakeShared方法,可以实现在类的构造函数执行完成后,执行特定的操作。 如下所示的代码,在SharedTest的构造函数完成后,执行Print函数 #include &lt;memory&gt; #include &lt;utility&gt; #include &lt;iostream&gt; class SharedTest {...

I have a adream 1699

c++ ,protected 和 private修饰的构造函数

c++  protected 和 private修饰的构造函数: 1.在类的外部创建对象时,不能调用protected或private修饰的构造函数。 2.当子类中的构造函数调用父类的private构造函数时会错,当子类中的构造函数调用父类中的 public或protected构造函数时是对的。   #include &lt;iostream&gt; using namespace...

weixin_34292924的博客 267

构造函数定义为private,protected

构造函数定义为private,protected 将构造函数,析构函数声明为私有和保护的,那么对象如何创建? 已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法???   提出这个问题,说明你已经对c++有所思考了。 从语法上来讲,一个函数被声明为protected或者private,那么这个函数就

zerokkqq的专栏 241

explicit构造函数和private

某天写一个用特定数据类型才能构造的类,就习惯性的声明了一个默认的构造函数,并声明为了private,避免勿调用默认的构造函数去声明这个类。但是却收到领导的一封邮件,建议用explicit去申明就行了,不建议用private. 处于懒惰的习惯,我回了一个ok,今天无意中看到邮件了,发现不对,靠 还是用代码说话吧: class myStr { protected: char* ...

weixin_30472035的博客 127
上一篇: 基本、数组、引用类型的参数传递
下一篇: static的用法和静态代码块
Li_Pine
博客等级 码龄12年 17粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值