JAVA基础理论理解
1.有参构造器和无参构造器的区别及作用
有参构造器和无参构造器,从名字上就可以看出,他们之间存在的区别就在于是否有参数进行传递,当我们new一个对象时,如果我们调用的方法内没有构造器,系统会默认使用无参的构造器进行对象的创建,进而对对象的实例进行初始化,当我们创建了有参构造器后,且没有创建无参构造器时,我们对无参的对象进行初始化和调用了,所以我们创建对象时,一般在同时创建这两种构造器对对象进行初始化操作
2.this关键字
书中对this关键字的说法是“指向当前对象的引用”,比较难以理解,然后我在知乎找到了一篇文,总结的很好:
- this:表示自身对象,也就是本对象自己
- this.属性名:表示本对象自己的属性
- this.方法名:表示本对象自己的方法
- this(参数)表示本对象自身的构造方法(注:”构造方法”这个概念是相对于”类”而言的,但具体到this(参数)这种用法时,表示”我这个对象自己的构造方法”)
- 外部类名.this.属性:表示在内部类中调用的是外部类的某个属性(调用外部类方法亦同) 具体原文链接:zhuanlan.zhihu.com/p/120934262
3.super关键字
super关键字的用法有三种:
- 在子类的成员方法中,访问父类的成员变量。
- 在子类的成员方法中,访问父类的成员方法。
- 在子类的构造方法中,访问父类的构造方法 注释:有些人认为 super 与 this 引用是类似的概念, 实际上,这样比较并不太恰当。这是 因为 super 不是一个对象的引用, 不能将 super 赋给另一个对象变量, 它只是一个指示编 译器调用超类方法的特殊关键字。
4.类设计技巧
- 保证数据私有
- 要对数据进行初始化
- 不能过多使用初始类型
- 不是所有的域都需要独立的域访问器和域更改器
- 将职责过多的类进行拆解
- 类名和方法名要能够体现他们的指责
- 优先使用不可变的类
5.类、子类、超类
5.1定义子类
使用extends对已有的类进行继承,进而生成一个新的类,被继承的类被称为超类(superclass)、父类或基类,而继承的类被称为子类(subclass)、派生类或孩子类
5.2覆盖方法
我们可以使用super关键字对父类的方法进行调用,特别是当我们子类与父类有重名的方法并要调用父类该方法时,我们就可以使用super进行对父类方法的指定调用
5.3子类构造器
- 当我们在子类中创建构造器的过程中,使用super关键字指定参数类型可以调用到父类含参数类型相同的构造器,由于子类的构造器不能访问父类的私有域,所以我们需要在子类的构造器中对父类的私有域进行初始化,我们可以通过 super 实现对超类构造器的调用。使用super 调用构造器的语句必须是子类构造器的第一条语句。
- 如果子类的构造器没有显式地调用超类的构造器, 则将自动地调用超类默认(没有参数 )的构造器。 如果超类没有不带参数的构造器, 并且在子类的构造器中又没有显式地调用超类的其他构造器’则 Java 编译器将报告错误。