温故《Java核心技术》,所以基本上是根据这本书对基础进行部分拾遗,看到哪儿记到哪儿
类关系
依赖(use-a)
A类的方法操作B类的对象,则A依赖B,比如Order类需要访问Account类,查看信用状态。
聚合(has-a)
类A对象包含类B的对象,比如Order对象包含Item对象
继承(is-a)
类A是类B的一种特殊情况,比如RushOrder由Order类继承而来
方法参数说明
Java传递类型两种:
- 基本数据类型
基本对象类型传递过去的是一个值得拷贝,所以不会改变原有的值; - 对象引用
对象传递过去的是对象的引用地址,所以如果改变对象的话,原对象内容会跟着变
继承
重载
方法名与参数形成一个标签(注意返回类型不在标签内),同一个方法名,不通的参数称之为(方法)重载
多态
一个超类,可以有很多个不同的子类,比如Employee(雇员)这个超类,他可以有很多子类开发人员、测试人员、经理、销售人员等等。Employee对象可以引用Employee对象,也可以引用任何他的子类对象,这种置换关系称之为多态
方法的执行过程
- 获取类名与方法名
- 获取参数,进行重载解析
- 找到参数完全匹配的方法,若有则定位此方法为调用方法
- 对参数进行类型转换,匹配最符合条件的方法
- 若都没有,或者找到多个,则报错
- 绑定方法
- 若方法是private、final、static类型的,则编译器可以知道准确方法,进行静态绑定(由编译器绑定)
- 若方法非以上三种类型,则调用方法需要依赖于隐式参数的实际类型,在运行时动态绑定(由方法调用器绑定)
- 执行方法
- 类方法(静态绑定),虚拟机会基于对象引用的的类型来选择调用的方法
- 实例方法(动态绑定),虚拟机基于对象实例(只有在运行时得知)类型,动态获取方法(这算是多态)
- 虚拟机提取对象的实际类型的方法表;
- 虚拟机搜索方法签名;
- 调用对象相匹配的方法
未完待续……