第四章 面向对象编程基础篇(6)

  1. Java相关API介绍
    当大家从“HelloWorld”接触到Java时,证明我们正式诞生Java世界的新手村中,当我们在新手村练到一定等级时,渴望去更大的世界去看看,打更多的怪(类),获得更多的宝藏(方法),游戏里会对怪进行介绍,方便玩家掌握其弱点,进而击杀,而API就是Java世界的怪物宝鉴,记录了Java世界所有的怪(类)和宝藏(方法),当我们完全掌握API可以说Java世界任你遨游。下面简单说下获取方法(以Java8为例):
  • 点击下面官网链接然后按下图操作
  • 选中Accept License Agreement
  • 点击下载就得到一个相关的压缩包,解压->docs文件夹->api文件夹(下载英文版)
  • Java8 API在线文档(英文版)
  1. Object类部分方法描述
  • toString()方法
  • toString()方法测试
    这里的(“d=” + d)等于(“d=” + d.toString())。
    哈希编码独一无二的代表了一个对象,并且通过哈希编码可以找到对象的位置。

  • equals()方法
  • equals()方法测试

    内存分析:


    继承自Object类的equals()方法中比较的是对象的引用,故c1==c2的原理等同于c1.equals(c2)。下图是API中关于Object类的equals()方法的简单介绍。

    下图对equals()方法进行重写:

    测试1:String中的Equals()方法:

    内存分析如下图:
    关于字符串内存分析的视频(马士兵)
    有关Java内存分析的大佬博客


    怕有一天大佬删除博客我找不到就做了截图保存(非原创,侵删)


    String类中对equals()方法进行了重写如下图:

    测试2:String字符串中的equals()方法

    内存分析及原理参见上文链接及下一个链接(非原创,向大佬学习)


    上述有关String字符串的拼接及相关内存分析
  1. 对象转型
    对象转型可带来比较不错的程序可扩展性,但并不是最佳且对在实现Java多态中具有重要意义。
    其中instanceof测试的是对象的实际类型而不是引用类型,具体实例参照下例。
    相关定义及注意事项

    实例:



    部分内存分析图

    上述内存图的相关解释: 父类引用指向子类对象(类似门缝里看人)只能看到作为父类的属性和方法,这里a是Animal类型,所以furColor属性访问不到。
  2. 多态/动态绑定
    多态是Java中面向对象的核心部分。
    实现多态必要的三个条件:
    a)必须要有继承。
    b)必须要有重写。
    c)必须要有父类引用指向子类对象。

定义:


实例:


内存分析图:

具体的内存分析如不清楚可以参考:马士兵老师多态分析
5. 抽象类(关键字abstract)
为了更便于使用多态,满足其三个必要条件出现了抽象类abstract的概念。
a)含有抽象方法的类必须为抽象类。
b)抽象类必须被继承但抽象类无法实例化。
c)抽象方法必须被重写且抽象方法只需声明无需实现。

6. Final关键字




7. 接口(关键字interface)
定义及特性:



实例:




接口可以帮助我们实现多重继承这种逻辑,接口和他的实现类之间存在着多态性。
注:一个疑问假设接口A和接口B中存在函数名相同的函数,则它们的实现类是如何实现的?如何解决冲突?情况如下图。
具体疑问链接如下马士兵老师的interface接口实现疑问



===========================================

重点总结

上述总结的相关链接(马士兵版)

注:本博客由溺水狗原创但其学习资源资料来源于网络(马士兵老师的教学视频),特此感谢马士兵老师

《J2SE 回炉再造10》-------溺水狗相关推荐

  1. 《J2SE 回炉再造06》-------溺水狗

    第四章 面向对象编程基础篇(2) Java与面向对象的缘分 为什么要使用对象,意义是什么? Java中的类如何定义? 类的定义包括静态(成员变量/属性)和动态(方法)两部分 成员变量与局部变量的有关事 ...

  2. 《J2SE 回炉再造18》-------溺水狗

    第十二章 GUI编程 1. 提纲 2. AWT包 3. Component和Container 4. Frame类 代码1: import java.awt.*;public class TestFr ...

  3. 《J2SE 回炉再造17》-------溺水狗

    第十一章 网络编程 1. 提纲 值得注意的是网络编程不等同于网站编程 2. 网络基础概念 3. 网络通信协议及接口 4. 数据分层的思想 5. 数据封装和数据拆封 6. IP协议 IPV4协议中用4个 ...

  4. 《J2SE 回炉再造16》-------溺水狗

    第十章 线程 1. 提纲 2. 线程的基本概念 进程是一个静态的概念,严格意义上讲并不能执行,我们所说的进程执行指的是进程里的主线程(main()方法)开始执行了 3. 线程的创建和启动 只要可以使用 ...

  5. 《J2SE 回炉再造15》-------溺水狗

    第九章 输入/输出流.字节/字符流.节点/处理流 1. 提纲 2. 概述 注1:输入/输出流:都是站在程序的角度来说的,而不是文件的角度.参考理解 注2:输入流:将其他资源传送到内存(程序):输出流: ...

  6. 《J2SE 回炉再造13》-------溺水狗

    第七章 String.StringBuffer.包装类.Math类.File类.枚举类 提纲: String类(不可变字符序列) 练习一参考答案 练习二参考答案 StringBuffer类(可变的字符 ...

  7. 《J2SE 回炉再造14》-------溺水狗

    第八章 容器类 Collection接口(Set.List.Map).Iterator接口.Comparable接口 提纲 容器的概念 Set无序不可重复,List有序可重复,两者是否equals C ...

  8. 《J2SE 回炉再造12》-------溺水狗

    第六章 数组 提纲: 一维数组概述: 元素类型为引用类型的数组: 3. 数组的初始化 注: 理解main函数中的参数:String[] args 约瑟夫环(逢三减一):选择排序法.冒泡排序法以及数组模 ...

  9. 《J2SE 回炉再造11》-------溺水狗

    第五章 异常 1. 提纲 2. Java异常概念 注:catch到的所有异常都必须进行操作,不然容易被忽略吞噬,造成安全隐患. 实例 3. 异常的分类 注:异常分类图十分重要,要分清哪种Excepti ...

最新文章

  1. vue实现点击后多级标题联动变化
  2. ​HealthKit开发快速入门教程大学霸内部教程
  3. JZOJ 4676. 【NOIP2016提高A组模拟7.21】模板串
  4. IBM存储部分常见配件PN号查询及描述翻译
  5. 日志框架 android,深度剖析Android JDK 日志框架
  6. hrtimer的简单使用 + 原理和实现【转】
  7. 阿里云移动研发平台EMAS,是如何连续5年安全护航双11的?
  8. Android 获取信号强度
  9. 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等 - Oracle   基础和管理_files...
  10. Hash Table in C
  11. NetSet:一款功能强大的自动化网络流量安全增强工具
  12. Android技术栈总结
  13. linux系统怎么改输入法,linux系统输入法怎么切换
  14. PLSQL配置Oracle 64位
  15. SAAS-HRM-day4
  16. 【学习笔记】用Mac自学虚幻4
  17. 大数据扫黄如此精准,你中招了没
  18. 爬虫 - 提高爬虫效率的方法
  19. 对Android初学者学习中的几点建议
  20. 邮储社招Java笔试题_2019年及历年中国邮政储蓄银行社招笔试题和参考答案6套

热门文章

  1. 从Camtasia Studio生成的课件看SCORM
  2. android开发第一次心的
  3. 【毕业设计】基于SSM的大学毕业设计管理系统
  4. 再论业余和专业--致力职业化 提高成功力
  5. 诺基亚n1装入Linux系统,实验一:linux系统安装与初用
  6. 免签苹果APP描述文件防止跳转浏览器代码+描述文件不显示顶部地址
  7. 系统设计、架构之类的随记
  8. 微信小程序之网络请求
  9. 微信小程序手把手教你实现带字母索引的城市选择列表
  10. 关于我封装了BeanCopier这件事