前言:
此刻同学们对“java中super”大体比较注重,朋友们都想要分析一些“java中super”的相关资讯。那么小编在网络上搜集了一些对于“java中super””的相关知识,希望小伙伴们能喜欢,小伙伴们快快来了解一下吧!子类构造方法执行时必然调用父类构造方法。
1.this与super对比:
目的是:或者说作用是说代码复用。
2.关于super的重要结论:
2.1代码引入解释:
注意:因为父类A与子类B都没有写构造方法,所以系统都赋有默认的无参构造方法。又因为他们的第一行都没有this()或super(),所以系统默认赋有super()(由此可得出,在方法的第一行不管写没有写super(),系统都会有的)。系统调用B方法时会先执行A方法,然后执行B方法,所以会有这样的输出值。
------------------------------------------------------------------------------
2.2super模拟的是什么:
2.3当父类中定义了有参构造方法而继承的子类中没有定义(默认是无参构造方法),运行报错:
注意:此时B方法中隐含有super(),但是()里没有int参数,所以报错,这说明了没有this和super的情况下会有默认的super()。父类A写了一个有参的构造方法,无参的构造方法就没了。
注意:
Super()只出现在构造方法中的第一行
------------------------------
使用super传入一个具体int值不报错(下面包含编译通过的截图):
2.4关于有this()时的代码:
注意:this()与super()都只能出现在代码的第一行。
3.Super()可以初始化父类私有特征:
-------------------------------------------------------------------
4.当子类与父类中含有同名的变量时,想要访问父类的,super不能省:
4.1代码引入:
注意:此时子类与父类中都含有String name,通过赋值(super(name))使父类中的name有值,而子类中的通过缺省构造器赋默认值null,因此输出值为null 张三 null 若去掉super,则第三个输出也为null,由此可得知,当父类与子类都含有相同的属性时,想在子类访问父类同名属性,super不能省。
-----------------------------------------
4.2内存图:
4.3得到结论1(Java中怎么区分子类与父类的同名属性):
4.4得到结论2(什么时候super不可省):
5super不可以单独使用:
5.1代码与运行结果引入:
注意:绿色部分为运行结果,显示为编译错误:需要’.‘。说明super不可单独使用。
5.2super不可单独使用原因:
6.0super总结:
标签: #java中super