知识点总结:
(1)关键字extends表示继承。已存在的类:超类/基类/父类,新类:子类/派生类/孩子类。为了调用超类中的方法,使用super关键字。
(2)关于super与this:super不是一个对象的引用,不能将super赋给另一个对象变量,他只是一个指示编译器调用超类方法的特有关键字。
(3)使用super调用构造函数的语句必须是子类构造函数的第一条语句。
(4)super的两个用途:一是调用超类的方法;二是调用超类的构造函数。
this的两个用途:一是引用隐式参数;二是调用该类其他的构造函数。
(5)一个对象变量可以引用多种实际类型的现象称为多态,在运行时能够自动的选择调用适当的方法的现象称为动态绑定。
动态绑定有一个非常重要的特性:无需对现存的代码进行修改,就可以对程序进行扩展。
(6) 如果方法是private,static,final或者构造函数,那么编译器将可以准确的知道该调用哪个方法,这种调用方式称为静态绑定。
(7)在覆盖(override)一个方法的时候,子类方法不能低于超类方法的可见性(权限),特别是,如果超类方法是public,子类方法一定要是public。
(8)如果将一个类声明为final,只有其中的方法自动变成final,而不包括域。
(9)强制类型转换:1)只能在继承层次内进行类型转换;2)在将超类转换成子类之前,应该用instanceof进行检查。(一般情况下,尽量少用)
(10)有关抽象类和protected关键字可以参见我的另一篇博文。
(11)Object类中equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。具体关于equals方法参见另一篇博文。
(12)hashCode返回每个对象的存储地址。如果重新定义equals方法,就必须重新定义hashCode方法。
(13)强烈建议:为自己编写的每一个类增加toString方法!!!在自己设计的类中,要重写equals和toString方法。
(14)利用下面的方法可以轻松扩展数组,也可以方便的访问数组元素:
首先,创建一个数组,并添加所以元素。
ArrayList list = new ArrayList();
while(…) {
x = …;
list.add(x);
}
X[ ] a = new X [ list.size ()];
list.toArray(a);
(15) 关于反射,请参见我的另一篇博文。
(16)在比较两个枚举类型的值时,永远不需要调用equals方法,而直接使用“= =”就可以了。
版权声明:本文为博主原创文章,未经博主允许不得转载。