《java核心技术》(原书第七版)读书笔记之第五章

时间:2021-09-13 16:10:40

   有阵子没写博客了,这一章看了很久,倒不是说内容很难,只是中间有很多事打断了,以后要争取每天都有记录,每天进步一点,加油!

  知识点总结:

  (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<X> list = new ArrayList<X>();

              while(...) {

               x = ...;

               list.add(x);

               }

              X[ ] a = new X [ list.size ()];

              list.toArray(a);

    (15) 关于反射,请参见我的另一篇博文。

   (16)在比较两个枚举类型的值时,永远不需要调用equals方法,而直接使用“= =”就可以了。


   好了关于继承这章就总结这些,上面只是一些知识点,至于细节还需要看书上具体讲的部分,关于反射这块看书的时候不是很理解,等后面用到再说吧,明天开始第六章!