龙空技术网

关于Java中的super

梦科 592

前言:

此刻同学们对“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