JAVA核心技术卷一学习笔记2021.06.10

154 阅读3分钟

JAVA基础理论理解

1.有参构造器和无参构造器的区别及作用

有参构造器和无参构造器,从名字上就可以看出,他们之间存在的区别就在于是否有参数进行传递,当我们new一个对象时,如果我们调用的方法内没有构造器,系统会默认使用无参的构造器进行对象的创建,进而对对象的实例进行初始化,当我们创建了有参构造器后,且没有创建无参构造器时,我们对无参的对象进行初始化和调用了,所以我们创建对象时,一般在同时创建这两种构造器对对象进行初始化操作

2.this关键字

书中对this关键字的说法是“指向当前对象的引用”,比较难以理解,然后我在知乎找到了一篇文,总结的很好:

  1. this:表示自身对象,也就是本对象自己
  2. this.属性名:表示本对象自己的属性
  3. this.方法名:表示本对象自己的方法
  4. this(参数)表示本对象自身的构造方法(注:”构造方法”这个概念是相对于”类”而言的,但具体到this(参数)这种用法时,表示”我这个对象自己的构造方法”)
  5. 外部类名.this.属性:表示在内部类中调用的是外部类的某个属性(调用外部类方法亦同) 具体原文链接:zhuanlan.zhihu.com/p/120934262

3.super关键字

super关键字的用法有三种:

  1. 在子类的成员方法中,访问父类的成员变量。
  2. 在子类的成员方法中,访问父类的成员方法。
  3. 在子类的构造方法中,访问父类的构造方法 注释:有些人认为 super 与 this 引用是类似的概念, 实际上,这样比较并不太恰当。这是 因为 super 不是一个对象的引用, 不能将 super 赋给另一个对象变量, 它只是一个指示编 译器调用超类方法的特殊关键字。

4.类设计技巧

  1. 保证数据私有
  2. 要对数据进行初始化
  3. 不能过多使用初始类型
  4. 不是所有的域都需要独立的域访问器和域更改器
  5. 将职责过多的类进行拆解
  6. 类名和方法名要能够体现他们的指责
  7. 优先使用不可变的类

5.类、子类、超类

5.1定义子类

使用extends对已有的类进行继承,进而生成一个新的类,被继承的类被称为超类(superclass)、父类或基类,而继承的类被称为子类(subclass)、派生类或孩子类

5.2覆盖方法

我们可以使用super关键字对父类的方法进行调用,特别是当我们子类与父类有重名的方法并要调用父类该方法时,我们就可以使用super进行对父类方法的指定调用

5.3子类构造器

  • 当我们在子类中创建构造器的过程中,使用super关键字指定参数类型可以调用到父类含参数类型相同的构造器,由于子类的构造器不能访问父类的私有域,所以我们需要在子类的构造器中对父类的私有域进行初始化,我们可以通过 super 实现对超类构造器的调用。使用super 调用构造器的语句必须是子类构造器的第一条语句。
  • 如果子类的构造器没有显式地调用超类的构造器, 则将自动地调用超类默认(没有参数 )的构造器。 如果超类没有不带参数的构造器, 并且在子类的构造器中又没有显式地调用超类的其他构造器’则 Java 编译器将报告错误。