java核心技术读书笔记

2023-05-16

对象的三个特征:

  •     对象的行为:可以对对象施加哪些操作,或者可以对对象施加哪些方法?

  •     对象的状态:当施加哪些方法时,对象如何响应?

  •     对象的标识:如何辨别具有相同行为与状态的不同的对象?

  •     对象的行为是用可调用的方法定义的

  •     对象的状态每个对象保存着描述当前特征的信息  

  •     对象的状态可能会随着时间的改变而变化,但这种改变不是自发的.对象状态的改变必须通过调用方法实现(如果不进过方法调用也可以改变 说明封装性        遭到了破坏)

  •     对象的标识对象的状态并不能完全描述一个对象,每个对象都有唯一的身份,就是对象的标识 例如一个订单系统中的订单号.

类之间的关系

    依赖 聚合 继承

  •     依赖 use-a关系 是一种明显的,最常见的关系 用软件工程的术语来说就是耦合

  •     聚合 has-a关系 一个对象包含着一些其他对象就是聚合 聚合关系意味着类a的对象包含类b的对象

  •     继承 is-a   关系   

类设计技巧

  • 一定保证数据私有(绝对不要破坏封装性)

  • 一定要对数据进行初始化

  • java不会对局部变量进行初始化,但是会对对象的实例化进行初始化.最好不要依赖系统的初始化

  • 不要再类中使用过多的基本类型,

  • 用其他的类代替多个相关的基本类型的使用.

  • 不是所有的域都要独立的域访问器或域更改器

  • 将职责过多的类进行分解

  • 类名和方法名要能够体现出他们的职责

继承设计的计较

  1.     将公共操作和域放在超类

  2.     不要使用受保护的域

  3.     使用继承实现is..a的关系

  4.     除非所有继承的方法都有意义,否则不要使用继承

  5.     在覆盖方法的时候不要改变预期的行为

  6.     使用多态

  7.     不要过多使用反射

方法的执行过程


编译器查看对象的声明类型和方法名

    可能存在多个方法名相同的方法例如f,但参数类型不一样的方法,编译器会把这个类的    所有方法f和其他的父类中的访问属性为public且名为f的方法.

    到现在编译器获得所有可能被调用的方法

编译器将查看调用方法时提供的参数类型.

    如果在所有名为f的方法中找到了一个与提供的参数类型完全匹配,就调用哪个方法,这个过程又叫重载解析

    到现在编译器已经获得需要调用的方法名和参数类型

    方法的名字和参数列表称为方法的签名.如果子类中定义了一个与超类签名相同的方法, 那么子类中这个方法就将覆盖超类中的这个方法签名相同的

    方法返回类型不是签名的一部分,所以在覆盖方法的时候一定要保证返回类型的兼容性允许子类将覆盖方法的返回类型定义为返回类型的子类

如果是private方法 static方法 final方法或者构造器,那么编译器将准确的知道自己该调用哪个方法我们将这种调用方式称为静态绑定.与之对应的

调用的方法依赖隐式参数的实际类型,并在运行时实现动态绑定.比如x.f();

当程序运行时,并且采用动态绑定调用方法时,虚拟机一定调用与x所引用对象的实际类型最适合的哪个类的方法,例如x实际是d类型的,d是c的子类,如果d定义了方法f就直接调用f,否则就去d父类中找

因为这样每次都要搜索半天,开销大,因此虚拟机就预先建立了方法表,其中列出了方法签名和实际方法,这样只需要找表就好了

//未完...好多都写在之前的学习总结里了

转载于:https://blog.51cto.com/10760006/2160003

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java核心技术读书笔记 的相关文章

随机推荐

  • 人脸识别“SphereFace: Deep Hypersphere Embedding for Face Recognition”

    在开放集中进行人脸识别 xff0c 理想的特征最大的类内差距应小于最小的类间差距 作者提出了angular softmax xff08 A Softmax xff09 损失函数学习angularly discriminative featu
  • 私有云拥有哪些好处?

    更高的安全性和隐私 虽然公共云服务提供了一定程度的安全性 xff0c 但是私有云是一个更安全的选择 这是通过使用不同的资源池实现的 xff0c 这些资源池的访问仅限于防火墙 专用租用线路和组织的现场内部托管 更多的控制 由于私有云只能由一个
  • 透视学如何成像

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 透视学如何成像 xff1f 这其中是有规律可循的 所谓 当局者迷 xff0c 旁观者清 我们自身无法去证实或者判断透视现象的规律 xff0c 因为我们的视觉已经适应这种变化
  • win10 64位JLink v8固件丢失修复总结

    大早晨的调着调着程序 xff0c 视线没离开一会 xff0c 就发现jlink自动断开连接了 xff0c 然后重新拔插jlink 重启都不行 xff0c 才发现小灯已经不亮了 xff0c 原来是固件损坏了 xff0c 果断想办法修复这位大爷
  • STP/RSTP/MSTP的分析与对比

    一 xff0e 生成树相关的几个概念STP RSTP MSTP STP xff1a IEEE Std 802 1D 1998定义 xff0c 不能快速迁移 即使是在点对点链路或边缘端口 xff0c 也必须等待2倍的forward delay
  • 运维工程师的职责和前景

    运维工程师的职责和前景 运维中关键技术点解剖 xff1a 1 大量高并发网站的设计方案 xff1b 2 高可靠 高可伸缩性网络架构设计 xff1b 3 网站安全问题 xff0c 如何避免被黑 xff1f 4 南北互联问题 动态CDN解决方案
  • Snipaste强大离线/在线截屏软件的下载、安装和使用

    步骤一 https zh snipaste com xff0c 去此官网下载 步骤二 xff1a 由于此是个绿色软件 xff0c 直接解压即可 步骤三 使用 xff0c 见官网 ttps zh snipaste com 按F1开始截屏 感谢
  • SQL分页查询总结{转}

    开发过程中经常遇到分页的需求 xff0c 今天在此总结一下吧 简单说来方法有两种 xff0c 一种在源上控制 xff0c 一种在端上控制 源上控制把分页逻辑放在SQL层 xff1b 端上控制一次性获取所有数据 xff0c 把分页逻辑放在UI
  • Hadoop MapReduce 处理2表join编程案例

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 假设文件1 表1 结构 hdfs文件名 t user txt 1 wangming 男 计算机 2 hanmei 男 机械 3 lilei 女 法学 4 hanmeixiu
  • 传统数据库“上云”之路

    2018 云栖大会南京峰会飞天技术汇 专场 上 xff0c 阿里云高级产品专家萧少聪从准备 迁移效率和迁移后效果三个方面分享了传统数据库迁移到阿里云数据库及后续使用情况的全链路解决方案 xff0c 针对主流数据库迁移到阿里云数据库的技术及实
  • Hadoop学习--URL方法访问HDFS数据--day04

    import java io ByteArrayOutputStream import java io InputStream import java net URL import org apache hadoop fs FsUrlStr
  • 解决vuepress报Error: Cannot find module ‘core-js/library/fn/object/assign问题(core-js版本与引入UI冲突问题)

    问题如图 原因 core js版本原因 解决方案 第一种 xff0c 在config文件 xff08 路径docs vuepress config js xff09 中加上以下代码 span class token function cha
  • SD-WAN与SDN:差异在于细节

    SD WAN和SDN xff1a 在很多方面类似 xff0c 从 SD 开始 SD WAN和SDN都有共同的遗产 xff0c 从控制平面和数据平面的分离开始 两者都设计为在商用x86硬件上运行 xff0c 两者都可以虚拟化 xff0c 并且
  • Linux命令模拟Http的get或post请求

    Http请求指的是客户端向服务器的请求消息 xff0c Http请求主要分为get或post两种 xff0c 在Linux系统下可以用curl和wget命令来模拟Http的请求 get请求 xff1a 1 使用curl命令 xff1a cu
  • 使用Python实现Hadoop MapReduce程序

    转自 xff1a 使用Python实现Hadoop MapReduce程序 英文原文 xff1a Writing an Hadoop MapReduce Program in Python 根据上面两篇文章 xff0c 下面是我在自己的ub
  • windows+R键的应用

    windows 43 R 然后输入以下几个命令 1 cmd 用于Windows命令行操作 比如 ping某个网络 看看是不是通的 或者directory等等Windows命令行操作 2 远程桌面连接 mstsc 3 dxdiag 是Wind
  • 用命令行方式关闭linux防火墙

    sbin iptables I INPUT p tcp dport 80 j ACCEPT sbin iptables I INPUT p tcp dport 22 j ACCEPT etc rc d init d iptables sav
  • cenotos 7桌面环境装mysql_CenotOS Linux 5 下Oracle 10g安装指南

    收集整理了一篇比较完美的CenotOS Linux 5 下Oracle 10g安装教程 分享个朋友们 xff01 Author xff1a David Young e4twood 64 gmail com Last 收集整理了一篇比较完美的
  • Curl命令使用解析大全

    自己翻译了好几天 xff0c 希望大家多多指正 linux下wget使用命令解析大全 名称 curl 传输URL 概要 curl 选项 URL 描述 curl是一个可以从服务器传输数据或者传输数据到一个服务器的工具 xff0c 支持以下协议
  • java核心技术读书笔记

    对象的三个特征 对象的行为 可以对对象施加哪些操作 或者可以对对象施加哪些方法 对象的状态 当施加哪些方法时 对象如何响应 对象的标识 如何辨别具有相同行为与状态的不同的对象 对象的行为是用可调用的方法定义的 对象的状态每个对象保存着描述当