Java编程思想简要笔记——第七章 复用类_kiba_zwei的博客-程序员秘密

技术标签: java  学习笔记  面向对象编程  编程语言    

组合

只需将对象引用置于新类中即可。显示的在新类中嵌入某对象,有助于理解部件的组成部分。

继承 extends

Java会自动在导出类的构造器中插入对基类构造器的调用。使用某个现有类,并开发一个他的特殊版本。
构造器的调用顺序:基类->导出类
但默认调用只调用其无参的构造方法,想要调用其带参数的构造法需要用super关键字。

代理

将一个成员对象置于所要构造的类中,同时在新类中暴露该成员对象的所有方法。

结合使用组合和继承

  1. 确保正确清理:用try-finally处理,一定不能用finalize
  2. 名称屏蔽:子类重载父类方法时,可以新增重载方法。当子类重载方法与父类方法返回值相异时,编译时就会报错。
  3. 如果必须向上转型,则继承是必要的,如果不需要,则应当好好考虑自己是否需要继承。

protected 专为继承而生

对类用户而言是private的,对导出类而言是public的
最好实现:private修饰域,用protected方法访问。
这里想到一个编码规范要求"在构造方法内不应调用可被覆写的方法"需要牢记。

final——这是不可改变的

final常量

  1. 永远不改变的编译时常量
  2. 运行时被初始化的值,而且你不希望他被改变

final修饰对象,对象可改变,但是对象引用不能改变,只允许一次初始化,可以存在空白final。

final参数

无法在方法中更改参数引用所指向的对象,主要用来向内部匿名类传递数据。

final方法

  1. 把方法锁定,以防任何继承类修改它的含义,确保继承时保持不变且不会被覆盖。
    疑问:父类final private的方法子类能够覆写么?
    答:可以同名重写,但这个不是覆写,因为private方法本身对子类不可见,不存在覆写的概念。
  2. 提高效率,编译时直接将final方法嵌入到代码中,减少了调用开销,但同时会使编出的包体积膨胀。Java6后就不推荐使用了。

final类

final类的所有方法、域都是final的

初始化及类的加载

  1. 类的代码在初次使用时才会被加载
  2. 访问static域或方法时才会被加载
  3. 加载顺序:
    静态域:基类->导出类
    构造方法:基类->导出类
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kiba_zwei/article/details/104136406

智能推荐

SpringBoot 启动后立即自动停止问题分析_爱学习 爱分享的博客-程序员秘密

参考有时候日志级别或者种种问题,输出不了错误日志,方法如下方法主启动类加一个try-catch

大数据环境搭建之Hadoop集群搭建_supermapsupport的博客-程序员秘密

作者:Neshoir    Hadoop是目前市面上比较主流的开源分布式存储及分布式大数据计算框架,其具有高可靠,高可用,可扩展性强等特点,其设计允许简单的编程模型跨计算机集群处理大规模数据集,框架本身不依赖于硬件的可用性,而是利用设计在应用程序层检测和处理故障。Hadoop项目包含的组件模块有Common,HDFS,MapReduce,YARN等。Hadoop Common:一些列的核...

import os总结_无情的搬砖机器的博客-程序员秘密

最近在看死磕yolo开源项目,之前没有做过相关的,所以,每一个句代码都要死磕,碰到import os 所以记录一下假装自己学过... .. .其实我主要还是在造轮子咯主要是参考下面这个博客:https://www.cnblogs.com/wuxie1989/p/5623435.html还有官方文档:http://docs.python.org/library/os.path.html...

【算法】Max Points On A Line 坐标系中一条直线上的最多点数_maxpoint on the line_无良剑染的博客-程序员秘密

文章目录Max Points On A Line 坐标系中一条直线上的最多点数题目解题思路代码实现Max Points On A Line 坐标系中一条直线上的最多点数题目给出一组坐标系的点,求出能连成一条直线的最多点数解题思路将坐标点 p1 的 x1 与 y1 的值,依次与后面的坐标点 pn的 xn 与 yn 做差值并相除((x1 - xn) / (y1 - yn))得出两点之间的斜...

混淆矩阵_AI study的博客-程序员秘密

混淆矩阵在机器学习领域中又称为错误矩阵或可能性表格。Example:假设有27只小动物:8只猫,6条狗,13只兔子。结果的混淆矩阵如下图:在混淆矩阵中,共有8只猫,其中又3只被预测成了狗;总共有6只够,其中被预测错的有3只;不过兔子预测效果不错。意义:混淆矩阵可以很方面的看出哪里有错误,因为正确的预测都在对角线上。...

汇总五大通用编程工具,作为程序员没用过3款以上的,都OUT了_程序员陈平安的博客-程序员秘密

作为程序员来说,做编程可谓是家常便饭了,俗话说得好:功夫再高,也要趁手的兵器!正如程序员做编程一样,今天给小伙伴推荐的是大部分程序员最常用的五大工具,作为资历程序员没用过3款以上的太有点被out的感觉!1 Notepad++这款工具看上去是不是都很熟悉?没错,想必80%甚至到了90%的程序员用过,普及率高的可怕,同时也很适合新手程序员上路,里面的小工具支持代码的亮高显示,语言适用程度特别高...

随便推点

51nod 2级算法题-1133_Ilooker的博客-程序员秘密

1133 不重叠的线段X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。Input第1行:1个数N,线段的数量(2 <= N <= 10000)第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9)O

NRF52810-QFAA和NRF52810-QCAA的区别_13631676419佐的博客-程序员秘密

NRF52810常用的有48脚和32脚,还有一个偏门的WCLSP2.48*2.48的。今天重点给大家介绍48脚和32脚的。nRF52810是nRF52系列SoC系列的。它以低价格,高性能的应用为BLE带来新的市场。nRF52810具有蓝牙BLE的协议支持,包括高速率1M–2 Mbps功能。并且支持ANT和2.4 GHz私有协议。同时具备极小的功耗,也是目前所有NRF52系列里封装最小的,(具有2.482 x 2.464 mm CSP封装。)基于64 MHz运行的ArmCortex-M4 CPU。

python缓存机制_python async_lru_weixin_43883907的博客-程序员秘密

不支持异步from functools import lru_cache @lru_cache(maxsize=128, typed=True) maxsize只使用最大缓存数,typed为True分类存储

移动互联:智慧城市背后的“智慧运营”_weixin_34067102的博客-程序员秘密

当今世界,互联网已经成为经济发展的新引擎、改善民生的新抓手、信息传播的新渠道、民众生活的新方式、观察时代的新窗口,成为这个时代最大的变数和机遇。移动互联网飞速发展,正引领中国互联网络发展的“第三波浪潮”。今年年初,嘉兴市政府提出了嘉兴市未来三年“互联网+”行动发展目标。11月16日,第三届世界互联网大会·乌镇峰会在桐乡乌镇召开,本届大会的主题为“创新驱...

angular动态隐藏和添加元素_angular 添加元素_ykyexin的博客-程序员秘密

需求:在指定大小的div内,展示标签,超出范围的标签需要隐藏,并以省略号代替。因每个标签的长度不定,所以可展示的最大标签数也不定。效果如下:问题:1.隐藏多余的标签;2.添加省略号;方案:1.判断当前标签是否超出范围,如果超出,通过ElementRef将其隐藏;           2.通过Renderer2渲染新创建的元素;           可将这些逻辑封装到指令中,具体代码如下:&amp;lt;d...

微信小程序:不在以下 request 合法域名列表中,请参考文档_微信小程序 跳过域名校验_牛魔王sq的博客-程序员秘密

1、开发模式可以跳过域名校验,在微信开发者工具中,可以临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。2、发布模式基本配置看官网文档就行,在这里主要说关键1点必须是https后必须重启微信开发工具,重启、重启、重启!!!...