请教一个变量作用域的问题

999朵玫瑰 2009-11-25 09:18:50
类A的属性aa设置为public
public class A{
public int aa;
}

类B的属性bb设置为private
public class B{
private int bb;
public int getBb(){
return bb;
}
public void setBb(num){
this.bb = num;
}
}

客户端修改类A的新实例的属性时:
A myA = new A();
myA.aa = 22;

客户端修改类B的新实例的属性时:
B myB = new B();
myB.setBb(33);

感觉客户端对类A和B变量操作权限效果是一样的阿,那区别在哪呢
...全文
216 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dangelrose 2009-11-25
  • 打赏
  • 举报
回复
要深刻理解OOP的思想~
其中重要的思想之一就是encapsulation~封装

通俗的说就是隐藏!!

A的弊病:
1.你现在A类的属性完全暴露~~不安全!
2.你要对赋值语句进行更加详细的封装的话和困难~
3。后期不好维护!
苍蝇①号 2009-11-25
  • 打赏
  • 举报
回复
这得从面向对象的封装性的好处入手
四十三号 2009-11-25
  • 打赏
  • 举报
回复
假设你两个类里的aa和bb,都是表示一个人的年龄。如果使用A类,有可能会给aa赋负值,或者超出正常的数值。
但是如果是B类,你可以在方法里做个处理,最好setXxx()方法能返回个布尔值

public boolean setBb(num){
if(num < 0 || num > 150){
return false;
}
this.bb = num;
return true;
}
lidongzhuo21 2009-11-25
  • 打赏
  • 举报
回复
如果get set方法全有的话就是一样的。。。但是有的时候程序员不想让客户端修改这个域时、或者只允许客户端设值而不允许得到值时、或者根本不让修改和获取时。就不提供get set方法,或只提供其中之一,就不一样了。
bawgiitx 2009-11-25
  • 打赏
  • 举报
回复

public class B{//这样的话不一样了吧
private int bb;//bb作当前操作数组的下标
private int[] cc;
public int getBb(){
return bb;
}
public void setBb(num){
this.bb = num;
if(bb<0)bb=0;
}
}
GreenVesture 2009-11-25
  • 打赏
  • 举报
回复
你这个例子,效果是一样的,但是方式不一样:
一个是直接访问类成员,myA.aa = 22;
一个是间接访问,myB.setBb(33);私有成员只能间接访问...
Dan1980 2009-11-25
  • 打赏
  • 举报
回复
这个问题和“变量作用域”有关系吗?
liugxb 2009-11-25
  • 打赏
  • 举报
回复
完全同意6楼的意见。
数据集可视化效果可参见下方展示。 【数据集概况】 · 检测类别(中文):[保龄球(bowling)] · 训练集:594 张 · 验证集:75 张 · 测试集:74 张 · 总计:743 张 该数据集聚焦于室内保龄球馆场景,系统性采集了多角度、多姿态下保龄球在不同运动阶段的视觉特征,为保龄球运动过程中的球体识别与轨迹分析提供了高质量标注样本,具有明确的体育训练与智能辅助系统开发价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9938** mAP50-95 | 0.6966 Precision | 0.9740 Recall | 0.9974 train/box_loss | 0.9113 train/cls_loss | 0.2862 val/box_loss | 1.1516 val/cls_loss | 0.3116 【训练过程分析】 100 轮训练后 mAP50 达到 0.9938,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6966,和 mAP50 差距 0.30,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9740、Recall 0.9974,精召双高,模型对保龄球的检测能力强。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖保龄球,置信度整体偏高。 【改进建议】 1. 丰富场景多样性:补充不同光照、背景和遮挡条件下的样本。 2. 提升输入分辨率:640 ...
PaddleOCR 与YOLO目标检测 HTTP 服务。 项目通过 PaddleOCROnnx 原生库集成 OnnxRuntime加速能力,围绕 ONNX 模型部署, 以统一接口提供图像文字识别、YOLO 目标检测和 Tensor 数据输出。 功能概览 文字识别:支持图片 Base64、multipart/form-data 上传,以及文本和 JSON 结果。 目标检测:支持 YOLO 图片检测,返回检测框 JSON 或原始 Tensor。 浏览器演示:访问服务根地址,上传图片并切换 OCR、YOLO 模式。 健康检查:通过 /health 查看服务及 OCR、YOLO 引擎初始化状态。 并发处理:通过 OCR 引擎实例池处理并发请求,可调整实例数量。 体验与调用 启动后访问: 入口 地址 浏览器演示 http://localhost:5000/ 健康检查 http://localhost:5000/health 原生依赖 Windows:优先从 runtimes/win-x64/native/ 加载原生 DLL;该目录没有 PaddleOCROnnx.dll 时,尝试从可执行文件所在目录加载。主 DLL 与对应后端依赖应放在同一原生目录中,不要将同一组依赖分散到多个目录。 Linux:原生运行时位于 runtimes/linux-x64/native/,程序使用相对于可执行文件的运行时搜索路径查找随包部署的依赖。 后端选择:CoreOCROnnx 支持 ONNX Runtime、OpenVINO、TensorRT 后端。请使用与平台、进程架构、硬件和后端匹配的一整套运行时,不要混用不同后端或版本的依赖。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧