《2018年2月18日》【连续130天】
标题:core java5.1,5.2;
内容:
1.继承层次:一个公共超类派生出的所有类的集合;
某个特定类到其祖先的途径叫继承链;
2.方法表:一种类型的方法集合。
调用某类型函数时,编译器会自动将方法与方法表对照,
如果签名相同,就调用这个方法,否则,就查找父类的方法表,
如果都未找到,就报错;
调用方法表的情况,一般是动态绑定;
当用private,final,static时,就是静态绑定,无需调用方法表;
3.final类,Stirng类是final类;
4.instanceof,用来检测类之间的强制类型转换是否可以成功进行;
5.由于object中的equals方法只是判断两个对象的引用是否相同,
所以要进行类内容的判断,就要覆盖equals方法;
6.equals有以下规范的特性:
a)自反性:对于任何非空引用x,x.equals(x)返回true;
b)对称性:对于任何引用x,y,当且仅当y.equals(x)返回true,x.equals(y)返回true;
c)传递性:对于任何引用x,y,z,当x.euqals(y)返回true,且y.equals(z)返回true,则x.equals(z)返回true;
d)一致性:如果x和y引用的对象没有发生变化,则反复调用x.equals(y)结果不应该改变;
e)对于任何非空引用x,x.equals(null)应该返回false;
一般来说,当判断两对象是否相等时,
当可能存在两对象不是同一类情况,程序员一般会用instanceof进行判断,然后判断是否返回false;
例如,q.euqals(x),q的类型是x的子类,且q与x内容完全相同,如果
equals内部运行的情况是
if(!(x instanceof q))return false;
则x.equals(q)的结果与之相反,违背了对称性原则;