您的位置 首页 java

关于Java中的super

子类构造方法执行时必然调用父类构造方法。

1.this与super对比:

关于Java中的super

目的是:或者说作用是说代码复用。

2.关于super的重要结论:

关于Java中的super

2.1代码引入解释:

关于Java中的super

注意:因为父类A与子类B都没有写构造方法,所以系统都赋有默认的无参构造方法。又因为他们的第一行都没有this()或super(),所以系统默认赋有super()(由此可得出,在方法的第一行不管写没有写super(),系统都会有的)。系统调用B方法时会先执行A方法,然后执行B方法,所以会有这样的输出值。

——————————————————————————

2.2super模拟的是什么:

关于Java中的super

2.3当父类中定义了有参构造方法而继承的子类中没有定义(默认是无参构造方法),运行报错:

关于Java中的super

注意:此时B方法中隐含有super(),但是()里没有int参数,所以报错,这说明了没有this和super的情况下会有默认的super()。父类A写了一个有参的构造方法,无参的构造方法就没了。

注意:

Super()只出现在构造方法中的第一行

——————————

使用super传入一个具体int值不报错(下面包含编译通过的截图):

关于Java中的super

2.4关于有this()时的代码:

注意:this()与super()都只能出现在代码的第一行。

关于Java中的super

3.Super()可以初始化父类私有特征:

关于Java中的super

——————————————————————-

关于Java中的super

4.当子类与父类中含有同名的变量时,想要访问父类的,super不能省:

4.1代码引入:

关于Java中的super

注意:此时子类与父类中都含有String name,通过赋值(super(name))使父类中的name有值,而子类中的通过缺省构造器赋默认值null,因此输出值为null 张三 null 若去掉super,则第三个输出也为null,由此可得知,当父类与子类都含有相同的属性时,想在子类访问父类同名属性,super不能省。

—————————————–

4.2内存图:

关于Java中的super

4.3得到结论1(Java中怎么区分子类与父类的同名属性):

关于Java中的super

4.4得到结论2(什么时候super不可省):

关于Java中的super

5super不可以单独使用:

5.1代码与运行结果引入:

注意:绿色部分为运行结果,显示为编译错误:需要’.‘。说明super不可单独使用。

5.2super不可单独使用原因:

6.0super总结:

文章来源:智云一二三科技

文章标题:关于Java中的super

文章地址:https://www.zhihuclub.com/190337.shtml

关于作者: 智云科技

热门文章

网站地图