super( )的用法
1. super.XXX
说明:这里的XXX指的是父类的成员变量名即父类的属性
2. super.XXX( )
说明:这里的XXX是父类中的其中一个方法名
3. super( )
说明:这种形式指的是:调用父类没有参数的构造方法(也叫构造函数)注意: 这里super( ) 只能放在子类的构造方法里面,并且只能放在构造方法的首句
4. super( x,y,z...)
说明:此形式指:调用父类有参数的构造方法,也必须放在子类的构造方法(成员方法不可以)里面,并且只能放在构造方法的首句。其中x,y,z是指的与父类此有参构造方法中参数数据类型相对应的子类中的参数
以上就是super( )的四种应用形式,具体的应用看以下代码:
1. super的第一种应用形式即调用父类的成员变量:
打印结果:
2. super的第二种应用形式即利用super关键字调用父类的无参构造方法:
打印结果:
为什么在Son这个类中并没有一条输出语句,但是还是输出了一句话?就是因为用new关键字去创建对象的时候,会去调用此类的构造方法,而在此构造方法中的第一句,就默认为是:super( ),也就是去调用了父类的无参构造方法 这一句代码是自动加上去的,哪怕自己不在第一行写上:super( ),就像写一个类,如果不写这个类的构造方法的话,会自动加上一个public void修饰的,并且方法体为空的方法一样,当然自己加上也是可以的,但是加的时候必须要在子类构造方法的第一句。
3. super的第三种应用形式即利用super关键字调用父类的有参构造方法:
结果打印:
可见super( )和super(str)分别调用了父类的Father( )和Father( String str )两个构造方法
4. super的第四种应用形式即利用super关键字调用父类的成员方法:
打印结果:
又以上结果可知,理论与实践相符!!!(其中“我是父亲的无参数构造方法…..”这句话之所以输出,是因为在Son(String str)此构造方法里面自动加上了super()而在Father( )里面有向控制台输出的语句。)
5. 子类的普通成员方法利用super关键字调用父类的成员方法:
打印结果: