继承_super()
来源:互联网 发布:信用卡在淘宝限额 编辑:程序博客网 时间:2024/05/17 23:04
创建子类实例时,会先执行父类构造函数定义的流程,再执行子类构造函数定义的流程。如下例:
class Some{ Some(){ System.out.println("调用Some()"); } } class Other extends Some{ Other (){ System.out.ptintln("调用Other()"); } }
如果执行new Other(),是先执行Some()中的流程,再执行Other中的流程,也就是显示结果为:
调用Some() 调用Other()
继续看原因:
我们知道,父类中可以重载多个构造函数,如果子类构造函数中没有指定执行父类的哪一个构造函数,默认就会调用父类的无参构造函数。如果想要执行其他某一个构造函数,可以使用super()指定,例如:
class Some{ Some(){ System.out.println("调用Some()"); } Some(int i){ System.out.println("调用Some(int i)"); }}class Other extends Some{ Other (){ super(10); //指定某一构造方法,不一定打印输出。 System.out.ptintln("调用Other()"); }}
在这个例子中,new Other()时,首先执行了super(10),表示调用构造函数时传入int数值10,也就是调用父类中Some(int i)版本的构造函数,而后再继续执行Other()中super(10)之后的流程。
重点来了,其实当你这么撰写时:
class Some{ Some(){ System.out.println("调用Some()"); } } class Other extends Some{ Other (){ System.out.ptintln("调用Other()"); } }
前面谈过,如果子类的构造函数中没有指定调用父类的哪一个构造函数,那么默认调用父类的无参构造函数,也就相当于你这么写:
class Some{ Some(){ System.out.println("调用Some()"); } } class Other extends Some{ Other (){ super(); //super()默认省略。 System.out.ptintln("调用Other()"); } }
注意:
this()与super()只能择一调用,并且一定要在构造函数的第一行。
0 0
- 继承_super()
- Java基础_super()用法和继承的关系
- Think in Java 构造函数_继承_super()_android_Dialog()_为何有些类没有构造函数自己体悟
- 黑马程序员_super 关键字
- Java基础_super
- Ruby学习笔记_super
- 7.11_SUPER STUPID CROSS
- Java泛型_下限_super
- jzoj 3838_Super Big Stupid Cross _暴力?
- cocos2d js 编译jsc 报错this._super is not a function
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- POJ 2697 - A Board Game
- 关于fgets函数
- Linux系统SPI驱动学习笔记(一)
- C语言:全局变量在多个c文件中公用的方法
- USB设备开发---- 基于libusb的无驱设计
- 继承_super()
- new和delete与内存分配
- Android自定义View——简单实现边缘凹凸电子票效果
- 测试王启航
- 一个中高级PHP工程师所应该具备的能力
- oracle中将一位数显示成两位数的函数
- 重新启动(结束并打开)explorer.exe C++
- 消息队列与如何spring mvc 项目中加入消息队列
- csdn下载频道资源整理