个人学习总结:
链接:【Java基础、springboot、springcloud、docker 等,学习目录】
一、继承 extends :
继承描述的是事物之间的所属关系。子类的共性抽取形成父类,子类继承来自父类的所有属性和方法。
注意:
1、继承后子父类的耦合性太强,所以只有真正需要继承的时候才使用继承。
2、父类私有的成员(private)、构造函数不能被继承。
3、创建子类对象时,默认会调用父类无参的构造函数。
4、父类又名超类、基类。
5、创建子类对象时,默认会调用父类无参构造函数(要先初始化父类,因为子类创建对象完毕可能会使用到父类的成员)。
6、降低类和类之间的代码重复、提高了代码的复用性(降低对象与对象之间的代码使用的是静态变量)
解释:
1、在主类中创建子类对象,会先调用父类无参构造函数(有参构造不调用),再调用子类构造函数。
2、子类的构造函数调用依据创建对象时传入的参数情况。
单继承:
一个类只能有一个直接的父类。不允许多继承。但支持多层继承(A extends B extends C)
二、super 关键字:
super代表的是父类空间引用。
作用:
1、子父类存在同名的成员(变量、方法),默认访问的是子类成员,可使用super关键字访问父类成员。
2、创建子类对象时,会默认调用父类的无参构造,可使用super调用指定的父类构造。
super 调用父类的构造时要注意的事项:
1、如果在子类的构造上没有指定调用父类的构造,那么java编译器会在子类的构造中加上super() 调用父类无参的构造。
2、super 调用父类构造函数时,该语句必须是子类构造函数中的第一个语句。
3、super 和 this 不能同时出现在同一个构造函数中调用其他的构造函数(都需要是构造函数的第一行);
super、this 的区别:
1、代表的事物不一致:
- this:代表的是所属函数的调用者对象。
- super:代表的是父类空间引用。
2、使用前提:
- this:本类中。
- super:存在继承关系的子父类中,子类使用。
3、调用构造函数的区别:
- this:调用本类的构造函数。
- super:调用父类的构造函数。
instanceof:
比较运算符,判断一个对象是否属于指定的类别。
使用前提:判断的对象与指定的类别必须存在继承或实现的关系
// 父类
public class Person {
private String id;
private String name;
public Person() { }
public Person(String id, String name) {
this.id = id;
this.name = name;
}
}
// 子类
public class Student extends Person {
private int age;
public Student(){
super();
}
}
public static void main(String[] args) {
Student student = new Student();
System.out.println(student instanceof Student); // true
System.out.println(student instanceof Person); // true
}
三、final:
final关键字主要用于修饰类、类成员、方法、以及方法的形参。
修饰范围 | 备注 |
---|---|
类 | 不能被继承,方法还可以调用,不可以重写。String类是final的。Integer类也是final的,防止代码功能被重写,该类没有必要进行扩展 |
变量 | 相当于一个常量, |
方法 | 子类不能重写,可以继承过来使用,调用方式不变 |
形参 | 在该形参所属的方法中不能修改该形参 |
使用:
1、final修饰一个基本类型变量时,该变量不能重新赋值,第一次的值即为最终的值。
// 修饰成员属性
public static final double PI = 3.14;
1:public :访问权限最大
2:static :内存中只有一份
3:final :是一个常量
4:常量名大写
5:必须初赋值。
2、final 修饰一个引用类型变量时,该变量不能重新指向新的对象。(地址值不可以改变,但对象中的属性值可以改变)
public static void main(String[] args) {
final Person user = new Person();
user = new Person("1","ron");
// user 变量又重新指向了新的对象,报错
}
3、常量一般被修饰为final,final 关键字一般和static关键字结合使用,可互换位置。
4、final修饰形参。项目中主要用于一些数据的函数。将未知变量声明为final的。增强数据的安全性。
public static void main(String[] args) {
String[] arr = { "how`s ", "it ", "going? ","Ron!" };
print(arr);
}
public static void print(final String[] arr) {
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
}