super( )的用法
解释一下super( ) : super( )其实就相当于一个指向基类的指针,
(Java中没有指针,但是可以这样理解)。至于用法有一下三种形式:
1. super.XXX( 这里的XXX指的是父类的成员变量名即父类的属性,或者对象名)
2. super.XXX( ) ( 这里的XXX是父类中的其中一个方法名)
3. super( ) ( 这种形式指的是:调用父类没有参数的构造方法(也叫构造函数)
注意: 这里super( ) 只能放在子类的构造方法里面,并且只能放在构造方法的首句)
super( x,y,z...) (此形式指:调用父类有参数的构造方法,也必须放在子类的构造方法(成员方法不可以)里面,并且只能放在构造方法的首句。其中x,y,z是指的与父类此有参构造方法中参数数据类型相对应的子类中的参数)
super:父类对象的引用
--访问父类的成员方法
--访问父类的成员属性
--访问父类的构造方法
--不能再静态方法中使用
package Day09;
public class Father {
public Father(){ //父类无参构造方法
System.out.println("是一个慈祥的人");
}
public void wan(){
System.out.println("但有时候喜欢打人!!");
}
}
package Day09; //测试类
public class Son extends Father {
public Son(){
super(); //调用父类无参构造方法
super.wan(); //调用父类的wan方法
}
public void Wan(){
System.out.println("喜欢整天打游戏!");
}
public static void main(String[] args) {
Father a=new Father(); //
第一次new创建对象自动调用父类中的无参函数
//如果把这一行去掉结果只输出一行 “是一个慈祥的人”不是两行!!
Son b=new Son(); //
第二次new创建对象调用了无参方法Son()里面的super调用了父类无参构造方法
b.Wan();
System.out.println("是个调皮的孩子!");
}
}
输出的结果是
是一个慈祥的人
是一个慈祥的人
但有时候喜欢打人!!
喜欢整天打游戏!
是个调皮的孩子!
this()的用法
this关键字指向的是当前对象的引用
this.属性名称指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)
注意事项
1.this() 不能使用在普通方法中 只能写在构造方法中
2.必须是构造方法中的第一条语句
/*一个构造方法中需要调用同一个类的另一个构造方法,
可以通过this()的方式调用,但this()必须要书写在第一行
*/
this:当前类对象的引用
--访问当前类的成员方法
--访问当前类的成员属性
--访问当前类的构造方法
--不能再静态方法中使用
举例:
public class This2 {
int i=20;
public This2(){
System.out.println("这是无参构造函数");
}
public This2(int i){
this(); //调用无参构造函数
this.i=i;
}
public void test(){
int i=30;
System.out.println(i);
System.out.println(this.i);
}
public static void main(String[] args) {
This2 t=new This2();
t.test();
}
}
输出的结果是 30 20