public class S {
int a ;
int b;
public SxtArrayList(int a, int b) {
super();
this.a = a;
this.b = b;
}
}
要说super就先要说this。
"this",作为一个特殊的关键字,它的规则如下:
1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。
2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。
"super"。它和"this"类似,但是也有不同的地方。
1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。
2。可以在一个类的非static成员内部使用。比如super.method()。
但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。
为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。
所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。
所以,你只要把super.xxx看成一个特殊的语法,比如理解为“super::xxx”就好了。
既然super不是一个变量,那么不能把它象一个普通变量那样"==",或者传递给某个函数就看起来很正常了,是么?何况,你其实也用不着它,有this你这些要求就都可以办到了。
3。super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。
调用基类的构造函数。
因为java默认会调用基类无参的构造函数,所以写不写其实都一样,这么写是多余的。
这里默认的调用父类object的构造函数,如果当前对象继承于另一个对象,则是调用被继承对象的构造函数
http://www.cnblogs.com/java-class/archive/2012/12/20/2826499.html
super是超级的意思,而java中的超级往往指的是你的父类,当你要调用本类的方法或在一个构造方法里面调用另外一个的构造方法时,你要使用this,当你在子类的够着方法中又想让他先走父类的构造方法时就要用super,否则就只会走子类的构造方法,别的方法也一样,没有super,方法一般走子类重写的父类方法,但有时既要走子类重写的方法,又要走父类的此方法时,就一定要用到super,它跟this作用基本一样,只是作用的对象不同,一个本类,一个父类。
super在这里是调用 SxtArrayList类的父类的构造方法
不过你构造方法必须跟类名要相同