(做项目中遇到的基础的但是很重要的概念)

来源:互联网 发布:linux系统自启动脚本 编辑:程序博客网 时间:2024/06/09 16:28

一,构造函数

举个例子:

这里有一个MovieDetailAdapter

private class MovieDetailAdapter extends RecyclerViewCommonAdapter<MovieDetailBean.Casts>{    public MovieDetailAdapter(Context mContext, List<MovieDetailBean.Casts> list)  //构造函数可以里面的参数可以改变,重载 {        super(mContext, list, R.layout.view_list_casts);    }
它继承它的父类

很明显这是父类的构造函数。

public RecyclerViewCommonAdapter(Context mContext, List<T> list, int layoutResId) {    this.mContext = mContext;    this.mList = list;    this.layoutResId = layoutResId;}
但是它继承的时候第三个参数即layout布局参数没有继承。但是super的时候又可以使用这个参数。

这个问题是我在使用MovieDetailAdapter的时候发现了,一开始的时候MovieDetailAdapter使用的是这样的

private class MovieDetailAdapter extends RecyclerViewCommonAdapter<MovieDetailBean.Casts>{    public MovieDetailAdapter(Context mContext, List<MovieDetailBean.Casts> list,int layoutResid)  //构造函数可以里面的参数可以改变,重载 {        super(mContext, list, R.layout.view_list_casts);    }
但是使用它的时候会报错

//处理这个RecycleView里 的照片了
MovieDetailAdapter detailAdapter = new MovieDetailAdapter(MovieDetailActivity.this, movieDetailBean.getCasts());
所以只能使用上面的继承两个参数,但是构造函数的super在这里有什么用,layout怎么传进来的。我又温习了构造函数的知识点,构造器是java中创建对象的时候通过new 关键字调用构造器,此时系统会对为该对象分配内存空间,只能通过内部的this关键字访问,当构造器完成时,该对象可以通过外部访问,并把此对象赋给另一个引用性变量。

这个属于构造器的重载,就是形参列表不同罢了,但是super在这里的用处了

使用构造器重载的时候需要注意:

如果有多个有参的构造器,其中,一个构造器的参数包含另一个构造器的参数如

public Apple(String name,String color){

this.name=name; this.color =color}


public Apple(String name,String color,double weight){

this.(name,color);

this.weight = weight;}

且调用另一个重载构造器,只能在第一行使用。

重载发生在同一个类中的多个同名方法中间,重写发生在子类和父类的同名方法之间(方法名,形参列表相同)

 super  用处是。调用父类被覆盖的实例方法,不是子类中重写的。从super 的这个词的意思就知道。是超类的方法。

这里的super 正是在子类中调用父类的构造器,前面说的一个构造器调用另一个重载的构造器是用this 。

supr();调用父类构造器执行初始化的过程。

未完

0 0
原创粉丝点击