super( )的用法

1. super.XXX

说明:这里的XXX指的是父类的成员变量名即父类的属性

2. super.XXX( )

说明:这里的XXX是父类中的其中一个方法名

3. super( )

说明:这种形式指的是:调用父类没有参数的构造方法(也叫构造函数)注意: 这里super( ) 只能放在子类的构造方法里面,并且只能放在构造方法的首句           

4. super( x,y,z...)

说明:此形式指:调用父类有参数的构造方法,也必须放在子类的构造方法(成员方法不可以)里面,并且只能放在构造方法的首句。其中x,y,z是指的与父类此有参构造方法中参数数据类型相对应的子类中的参数

以上就是super( )的四种应用形式,具体的应用看以下代码:

1. super的第一种应用形式即调用父类的成员变量:

java里面super的用法 java super()用法_java里面super的用法

java里面super的用法 java super()用法_构造方法_02

打印结果:

java里面super的用法 java super()用法_java里面super的用法_03

 

2. super的第二种应用形式即利用super关键字调用父类的无参构造方法:

 

java里面super的用法 java super()用法_父类_04

 

java里面super的用法 java super()用法_java里面super的用法_05

打印结果:

java里面super的用法 java super()用法_父类_06

为什么在Son这个类中并没有一条输出语句,但是还是输出了一句话?就是因为用new关键字去创建对象的时候,会去调用此类的构造方法,而在此构造方法中的第一句,就默认为是:super( ),也就是去调用了父类的无参构造方法 这一句代码是自动加上去的,哪怕自己不在第一行写上:super( ),就像写一个类,如果不写这个类的构造方法的话,会自动加上一个public void修饰的,并且方法体为空的方法一样,当然自己加上也是可以的,但是加的时候必须要在子类构造方法的第一句。

 

3. super的第三种应用形式即利用super关键字调用父类的有参构造方法:

java里面super的用法 java super()用法_java里面super的用法_07

java里面super的用法 java super()用法_子类_08

 

结果打印:

java里面super的用法 java super()用法_父类_09

 

可见super( )和super(str)分别调用了父类的Father( )和Father( String str )两个构造方法

4. super的第四种应用形式即利用super关键字调用父类的成员方法:

java里面super的用法 java super()用法_构造方法_10

java里面super的用法 java super()用法_父类_11

打印结果:

java里面super的用法 java super()用法_父类_12

 

又以上结果可知,理论与实践相符!!!(其中“我是父亲的无参数构造方法…..”这句话之所以输出,是因为在Son(String str)此构造方法里面自动加上了super()而在Father( )里面有向控制台输出的语句。)

 

 

5. 子类的普通成员方法利用super关键字调用父类的成员方法:

java里面super的用法 java super()用法_父类_13

 

java里面super的用法 java super()用法_子类_14

打印结果:

java里面super的用法 java super()用法_java里面super的用法_15