java中super关键字的用法,简要叙述java中super关键字的作用
目录
超有什么用?什么时候super不能省略?super在内存图中是如何存在的?使用super时的注意事项总结
00-1010 (1)子类中构造函数第一行没有super时,默认情况下第一行会有一个super(),用来调用父类的无参数构造。
例:
class { public a(){ system . out . println(父类构造函数执行!);}} public class supertest扩展了一个{ public super test(){//这里会有一个默认的super(),它会调用父类的无参数构造。System.out.println(子类构造函数执行!);} public static void main(String[]args){ superTest s=new superTest();} }执行结果如下:
(2)如果要调用父类中的参数化构造,可以在子类构造方法的第一行添加super(形参表),其中形参表对应的是父类中要调用的参数化构造的形参表。
例:
class A {///无参数构造public A(){System.out.println(父类无参数构造方法执行!);}//参数构造函数public a(int a){ system . out . println(父类有参数构造函数执行!);}}public class superTest扩展了一个{ public super test(){ super(100);System.out.println(子类构造函数执行!);} public static void main(String[]args){ superTest s=new superTest();} }执行结果如下:
(3)父类型特征(实例变量)可以通过super.xxx的方式在子类中调用;通过==super.xxx()==调用父类型方法(实例方法)
A类{字符串名称;public A(字符串名称){ this.name=name}}public class superTest扩展了一个{ public super test(String name){ super(name);} public void shopping(){ system . out . println(super . name is shopping!);} public static void main(string[]args){ supertest=new supertest(张三);s . shopping();} }运行结果如下:
super有什么用?
超和这个很像,很多情况下可以省略。Java允许子类中出现与父类同名的变量。如果想在子类中访问父类中同名的特性,那么super是不能省略的。
A类{字符串名称;Public () {name=张三;} }公共类superTest扩展了一个{ String namePublic superTest(){name=李四;} public void do some(){ system . out . println(this . name do some!);//系统会自动将name视为this . name system . out . println(name do some!);system . out . println(super . name do some!);} public static void main(String[]args){ superTest s=new superTest();s . do some();} }运行结果如下:
00-1010以上面的代码为例,画出大致的内存图如下:
00-1010 (1) Super()是指通过子类的构造函数调用父类的构造函数。模拟现实中的这个场景:想生儿子,先要有爸爸。
(2)第一道施工时的方法:
如果既没有this()也没有super(),默认会有一个super();
指示父类的无参数构造函数通过当前子类的构造函数调用。
因此,需要确保父类的无参数构造方法存在。
(3)this()和super()不能共存,只能出现在构造函数的第一行。
(4)父类的构造方法必然要执行。
(5)在Java语言中,不管是什么新对象,都会执行Object类中的无参数构造,而且是在栈顶(称为last,但执行是先完成的,后进先出)。
super什么时候不可以省略呢?
本文到此为止。希望它能帮到你,也希望你能多关注更多的盛行它的内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。