多个构造函数的写法和this,super关键词

1、使用this调用其他它构造函数

    public HomeAdapter(Context c) {
        this.mContext = c;
        mLayoutInflater = LayoutInflater.from(mContext);
    }

    public HomeAdapter(Context c, List<Share> list) {
        // TODO Auto-generated constructor stub
        this(c);
        mlist=list;
    }
 

"this",作为一个特殊的关键字,它的规则如下:
1、可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。
2、在构造函数中使用this调用另一个构造函数,要放在第一行:Constructor call must be the first statement in a constructor
3、可以在一个类的非static成员内部使用,表示当前这个对象


2、使用super调用父类的构造函数

public class AuthFailureError extends VolleyError {

    public AuthFailureError(NetworkResponse response) {
        super(response);
    }
}

1、super();//调用父类的构造方法,一定要放在方法的首个语句

没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。

2、super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。Done!

3、Java中,有时还会遇到子类中的成员变量或方法与父类中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用父类中的这个成员变量或方法,就需要用到super.变量或super.方法()

原文地址:https://www.cnblogs.com/xingyyy/p/4151362.html