this和super的区别?
分别是什么?
this代表本类对应的引用
super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)
怎么用呢?
A:调用成员变量
this.成员变量 调用本类的成员变量
super.成员变量调用父类的成员变量
B:调用构造方法
this(...)调用本类的构造方法
super(...)调用父类的构造方法
C:调用成员方法
this.成员方法 调用本类的成员方法
super.成员方法 调用父类的成员方法
继承中构造方法的关系
A:子类中所有构造方法默认都会访问父类中空参数的构造方法
B:为什么?因为子类会继承父类中的数据,还可能使用父类的数据,所有子类初始化之前,一定要先完成父类数据的初始化。
注意:子类每一个构造方法的第一条语句默认都是:super();
如果父类没有无参构造方法,那么子类中的构造方法会出现什么现象如何解决?
报错
如何解决?
A:在父类中加一个无参构造方法
B:通过super关键字去显示的调用父类的带参构构造方法
C:子类通过this去调用本类的其他构造方法
子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化
注意事项:
this(...)或者super(...)必须出现在第一条语句上。
如果不是放在第一条语句上,就可能对父类的数据进行多次初始化
一个类的初始化过程
成员变量初始化--默认初始化--显示初始化--构造方法初始化
继承中·成员方法的关系
如果子类中的方法和父类中的方法声明一样?
通过子类对象调用方法:
A先找子类中,看有没有这个方法有就用
b再看父类中,有没有这个方法,有就用
c如果没有报错
方法重写的注意事项
A:父类中私有方法不能被重写因为父类私有方法子类根本就无法继承
B:子类重写父类的方法时,访问权限不能更低
c:父类静态方法,子类也必须通过静态方法进行重写
final:最终的意思。它可以修饰类,方法,变量
特点:
final可以修饰类,该类不能被继承
final可以修饰方法,该方法不能被重写
final可以修饰变量,该变量不能被重新赋值,因为这个变量其实是常量
final修饰局部变量A.基本类型 值不能变B.引用类型地址不能变。
final 修饰变量的初始化时机:
A:被final修饰的变量只能赋值一次
B:在构造方法完毕前。(非静态的常量)