java私有 公开 保护_性能与设计相关的java中的私有/受保护方法
我们正在和一位朋友讨论有关Java代码设计和效率的问题。
他认为,方法应该优先保密,因为性能方面的原因以及覆盖时的类一致性保护。
我认为方法应该最好被保护以实现完全的可定制性,并且一旦用户想要改变其部分行为,就可以避免时间的修改和释放。
我们知道composition over inheritance的偏好,所以我在这里主要关注性能比较。
一个简单的测试(见下文)证明父类拥有受保护方法的扩展类不会比具有私有方法的父类慢。甚至有时(我不太了解性能变化)更快。
elapsed:8051733.063 microseconds for A (private)
elapsed:8036953.805 microseconds for B (protected)你认为下面提到的测试足够强大,可以进行比较吗?
public class VerifPerfProtected {
public static void main(String[] args) {
int ncalls = 1000000000; //10^9
ChildrenClassA a = new ChildrenClassA();
ChildrenClassB b = new ChildrenClassB();
long start = System.nanoTime();
a.manyCalls(ncalls);
long stop = System.nanoTime();
System.out.println("elapsed:" + (stop - start)/1000.0 + " microseconds for A (private)");
start = System.nanoTime();
b.manyCalls(ncalls);
stop = System.nanoTime();
System.out.println("elapsed:" + (stop - start)/1000.0 + " microseconds for B (protected)");
}
public static class ParentClassA{
public void manyCalls(int n){
for (int i = 0; i < n; i++) {
callAmethod();
}
}
public void callAmethod(){
aPrivateMethod();
}
private void aPrivateMethod(){
int a=0;
for (int i = 0; i < 5; i++) {
a++;
}
}
}
public static class ParentClassB{
public void manyCalls(int n){
for (int i = 0; i < n; i++) {
callAmethod();
}
}
public void callAmethod(){
aProtectedMethod();
}
protected void aProtectedMethod(){
int a=0;
for (int i = 0; i < 5; i++) {
a++;
}
}
}
public static class ChildrenClassA extends ParentClassA{
}
public static class ChildrenClassB extends ParentClassB{
}
}
java私有 公开 保护_性能与设计相关的java中的私有/受保护方法相关推荐
- java积分管理系统代码_【全套设计下载】JAVA某店POS积分管理系统(源代码+论文)...
[全套设计下载]JAVA某店POS积分管理系统(源代码+论文) 摘 要 开发一个大而复杂的POS积分管理软件系统,将它进行适当的分解,不但可以降低其复杂性,还可以减少开发工作量,降低开发成本,提高软件 ...
- wps怎么关闭视图保护_怎么在PPT2013中清除编辑受保护视图功能?
软件大小: 67.82MB 软件版本: 10.1.0.7400 软件类型: 办公工具 查看详情 直接下载 怎么在PPT2013中清除编辑受保护视图功能?下面小编就为大家带来了在PPT2013中清除编辑 ...
- java 弱引用定位_手把手教你定位常见Java性能问题
概述 性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙 ...
- java窗体显示字体_文字字体设计窗体 实验!求大神
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExpl ...
- java编写文件系统的方法_操作系统课程设计模拟文件系统Java
[实例简介] 一个操作系统课程设计,使用java语言模拟磁盘文件系统实现,实现了FAT算法 [实例截图] [核心代码] e692cc3b-c785-40f6-babe-2f9d5383f034 └── ...
- java契约式编程_契约式设计 Design by contract
在我职业之初,我想得最多的是:当调用一个方法时,传入的参数,我是进入该方法前检查呢?还是进入到该方法后检查?特别是在某个方法中,为了保证该方法能顺利执行,之前的条件检查.if-else-简直是噩梦.所 ...
- pythonui教学视频_分享软件开发相关视频教程(Java、C++、Python、UI设计、HTML5、iOS)...
以下是我收藏的关于开发及其他教程,基本都是花钱在网上买的,网盘没有加密的,虽然特别爱学习,但并不可能有这么多的精力学习这么多,技术总是很快就被新的淘汰掉,放在网盘中确实太浪费呀,分享出去吧,希望想学习 ...
- java grpc 服务路由_.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容
原标题:.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容 英文:devblogs.microsoft.com 来源:艾心 译文:cnblogs.com/ediso ...
- java.policy无法修改_如何配置Policy文件进行Java安全策略的设置
中国人最喜欢访问的网站 只要注册ofo就送你10块钱,还等什么,快来注册吧 Java语言具有完善的安全框架,从编程语言.编译器.解释程序到Java虚拟机,都能确保Java系统不被恶意的代码或敌对的编译 ...
- java 内存溢出分析_用一段时间后java内存溢出问题分析(转)
几乎每个月都有出现因为内存溢出的问题,除了需要多分配内存外, 是不是要考虑对代码进行一些处理.. 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1.尽量在合适的场合使用单例 使 ...
最新文章
- R语言应用calibrate包的textxy函数向R原生绘图结果中添加文本标签:添加多个文本标签、改变文本标签的字体、改变文本标签的字体颜色
- mysql 语句除法_SQL的查询语句(除法)
- 设计模式复习-工厂方法模式
- websocket协议
- Android 欢迎页面的编写
- JavaScript 预解析机制
- mysql_分组查询
- java的demo打印功能_java实现打印功能demo
- 如何实现卫星通信的稳定链接?
- 通过eclipse对apk加密混淆的方法
- grpc-go源码剖析二十之grpc客户端帧接收器是如何处理不同的帧的?
- 3款别出心裁的电脑软件,个个精选,让你眼前一亮
- 特殊的数独身数,:水仙花数, 四叶玫瑰数, 五角星数, 六合数 ,北斗七星数, 八仙数, 九九重阳数 ,十全十美数...
- 整理外企常用英语及其缩写
- ubutu16.04台式机没有声音处理方法
- 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)
- 软件测试用例设计之Pairwise算法
- 路径中 斜杠/和反斜杠\ 的区别
- 使用pandas读取excel
- python写微信小程序源码示例_python实现微信小程序用户登录、模板推送
热门文章
- 单例模式的两种实现方法:饿汉式和懒汉式以及民间懒汉式和登记式
- JS开发工具WebStorm使用快捷键
- java线程--倒计时器CountDownLatch
- GitHub使用笔记
- 翻书插件:bookblock.js
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析...
- SQL 2008 群集配置详尽攻略[3]—主节点备节点数据库安装
- LVDS 屏 format
- (转)DPDK内存管理 02 -----初始化
- Linux内核的Kmemleak实现内存泄露检测