this和super的区别

简介: this和super的区别
this和super的区别?

分别是什么?

this代表本类对应的引用

super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)

怎么用呢?

A:调用成员变量

this.成员变量 调用本类的成员变量

super.成员变量调用父类的成员变量

B:调用构造方法

this(…)调用本类的构造方法

super(…)调用父类的构造方法

C:调用成员方法

this.成员方法 调用本类的成员方法

super.成员方法 调用父类的成员方法

继承中构造方法的关系

A:子类中所有构造方法默认都会访问父类中空参数的构造方法

B:为什么?因为子类会继承父类中的数据,还可能使用父类的数据,所有子类初始化之前,一定要先完成父类数据的初始化。

注意:子类每一个构造方法的第一条语句默认都是:super();

image.png

如果父类没有无参构造方法,那么子类中的构造方法会出现什么现象如何解决?

报错

如何解决?

A:在父类中加一个无参构造方法

B:通过super关键字去显示的调用父类的带参构构造方法

C:子类通过this去调用本类的其他构造方法

子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化

注意事项:

this(…)或者super(…)必须出现在第一条语句上。

如果不是放在第一条语句上,就可能对父类的数据进行多次初始化

一个类的初始化过程

成员变量初始化–默认初始化–显示初始化–构造方法初始化

继承中·成员方法的关系

如果子类中的方法和父类中的方法声明一样?

通过子类对象调用方法:

A先找子类中,看有没有这个方法有就用

b再看父类中,有没有这个方法,有就用

c如果没有报错

方法重写的注意事项

A:父类中私有方法不能被重写因为父类私有方法子类根本就无法继承

B:子类重写父类的方法时,访问权限不能更低

c:父类静态方法,子类也必须通过静态方法进行重写

final:最终的意思。它可以修饰类,方法,变量

特点:

final可以修饰类,该类不能被继承

final可以修饰方法,该方法不能被重写

final可以修饰变量,该变量不能被重新赋值,因为这个变量其实是常量

final修饰局部变量A.基本类型 值不能变B.引用类型地址不能变。

image.png

final 修饰变量的初始化时机:

A:被final修饰的变量只能赋值一次

B:在构造方法完毕前。(非静态的常量)

相关文章
|
9月前
定义类,super的使用,super的使用
要求: a.需要有一个类变量 b.需要有>=2个的对象变量 c.定义一个方法:打印类变量和对象变量 d.使用print打印对象->输出为This is a object e.实例化两个对象:且两个对象相加等于2 f.为对象添加一个临时变量temp_var
31 0
|
9月前
|
Java
关键字super
关键字super
34 0
|
8月前
14-self与super以及isMemberOfClass与isKindOfClass的区别
14-self与super以及isMemberOfClass与isKindOfClass的区别
27 0
|
8月前
|
Java
关键字:super
关键字:super
33 0
|
11月前
|
Java Android开发
构造器里面的super()有什么用?到底写不写?
平时写的单独一个类如果没有直接继承父类就是直接继承的Object,有父类就是间接继承的Object,因为父类会继承Object,java的所有类都是Object的子类,哪怕不写super(),也会默认调用的父类的空构造器。
76 0
|
Java 编译器
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
195 0
this和super用法的区别与细节(java继承中this和super的比较)
this和super用法的区别与细节(java继承中this和super的比较)
|
Java 编译器
super&this
类在继承时会用到this和super,this通常指当前对象,super则指父类的。
248 0
|
开发者 Python
Super()|学习笔记
快速学习 Super()