1、super是个关键字,全部小写,代表当前对象的父类特征。
2、this和super对比着学
1、this
this的语法:this. 和 this()
this. 大部分情况下可以省略,当用于区分局部变量和实例变量时,不能省。
this()只能出现在构造方法的第一行,用来调用本类中的其他构造方法,实现代码复用。
this只能在实例方法和构造方法中使用,不能在静态方法中使用。main方法中也不行。
2、super
super代表当前对象的父类型特征。
super的语法:super. 和 super()
super. 大部分情况下可以省略。 父中有,子中也有,想在子类中访问父类型中的时,不能省。
super()只能出现在构造方法的第一行。 作用:在子类的构造方法中,调用父类中构造方法初始化当前对象的父类特征,并没有创建父类。
super不能在静态方法中使用。main方法中也不行。
3、重要结论
-
当一个构造方法第一行既没有this()也没有super()时,会默认有一个super()。所以必须保证父类的无参构造方法存在。
-
this()和super()不能同时存在于同一个构造方法中。
-
new对象时,父类中的构造方法一定会执行。
-
super不能访问父类中私有的。私有的只能在本类使用。
4、super在JVM中的内存分布
5、Java语言中,允许子类出现与父类同名的变量或方法,但在使用的时候要区分。
例子:使用方法做例子,变量一样。
1、
调用yiDong方法,结果是: Cat move!
Cat move!
Animal move!
2、
调用yiDong方法,结果是 Animal move!
Animal move!
Animal move!