第四章 面向对象编程基础篇(6)
- Java相关API介绍
当大家从“HelloWorld”接触到Java时,证明我们正式诞生Java世界的新手村中,当我们在新手村练到一定等级时,渴望去更大的世界去看看,打更多的怪(类),获得更多的宝藏(方法),游戏里会对怪进行介绍,方便玩家掌握其弱点,进而击杀,而API就是Java世界的怪物宝鉴,记录了Java世界所有的怪(类)和宝藏(方法),当我们完全掌握API可以说Java世界任你遨游。下面简单说下获取方法(以Java8为例):
- 点击下面官网链接然后按下图操作
- 选中Accept License Agreement
- 点击下载就得到一个相关的压缩包,解压->docs文件夹->api文件夹(下载英文版)
- Java8 API在线文档(英文版)
- 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字符串的拼接及相关内存分析
- 对象转型
对象转型可带来比较不错的程序可扩展性,但并不是最佳且对在实现Java多态中具有重要意义。
其中instanceof测试的是对象的实际类型而不是引用类型,具体实例参照下例。
相关定义及注意事项:
实例:
部分内存分析图:
上述内存图的相关解释: 父类引用指向子类对象(类似门缝里看人)只能看到作为父类的属性和方法,这里a是Animal类型,所以furColor属性访问不到。 - 多态/动态绑定
多态是Java中面向对象的核心部分。
实现多态必要的三个条件:
a)必须要有继承。
b)必须要有重写。
c)必须要有父类引用指向子类对象。
定义:
实例:
内存分析图:
具体的内存分析如不清楚可以参考:马士兵老师多态分析
5. 抽象类(关键字abstract)
为了更便于使用多态,满足其三个必要条件出现了抽象类abstract的概念。
a)含有抽象方法的类必须为抽象类。
b)抽象类必须被继承但抽象类无法实例化。
c)抽象方法必须被重写且抽象方法只需声明无需实现。
6. Final关键字
7. 接口(关键字interface)
定义及特性:
实例:
接口可以帮助我们实现多重继承这种逻辑,接口和他的实现类之间存在着多态性。
注:一个疑问假设接口A和接口B中存在函数名相同的函数,则它们的实现类是如何实现的?如何解决冲突?情况如下图。
具体疑问链接如下马士兵老师的interface接口实现疑问
===========================================
重点总结
上述总结的相关链接(马士兵版)
注:本博客由溺水狗原创但其学习资源资料来源于网络(马士兵老师的教学视频),特此感谢马士兵老师