super关键字是调用super class的构造函数,this可以表示自身类的引用,也可以表示本类其他的构造函数 比如 class good{ public good(int c,int m){ //.... } public good(int c){ super(c,20);//调用上面一个构造函数 super用法是: class car{ public car(int m){ // } } class Benz extends car{ public Benz(int c){ super(m);//调用超类的构造函数 } } }
传入jj,方法调用super(jj)
就是父类的构造方法Villain(int ii)
super其实就是class Villain的一个实例
你的jj是你的Orc得参数
super(jj);相当于父类Villain(jj),这时候父类的i的值就是jj得值
你可以用父类的read()方法来取得显示这个值this相当于一个object,代表当前对象
举个简单例子可能就明白了
public class Orc extends Villain
{
private int j;
public Orc(int jj){super(jj); j = jj;}
public void change(int x){set(x);}
public void sample(int cc){
int j;
j=cc;
System.out.println(this.j); //显示的是你用Orc(int jj)初始化的时候的值 比如是5
System.out.println(j); //显示的是你传入的cc的值,比如cc=10
this.j=j;
System.out.println(this.j); //显示的是你重新设定得值 如上情况的话是10
System.out.println(j); //j没有设定过还是原来的cc,是10
}
}
如果父类有其他的构造方法,那么在子类的构造方法里 必须显示地调用父类非默认的构造方法。在Villain类中 有public Villain(int ii){i = ii;}
所以在子类里必须用 super(jj);
如果没有 编译时就会出错
2.class Villain 没有jj呀,
但是Villain 里有public Villain(int ii){i = ii;}
和这个匹配。
3.super是为了方便从子类里显式访问父类的内容的。
在这个例子中,应该是public Villain()
不要迷茫在小jj 上了,它只是个参数而已,和(int ii)是匹配的!OK!
多看看吧!很easy!!
比如
class good{
public good(int c,int m){
//....
}
public good(int c){
super(c,20);//调用上面一个构造函数
super用法是:
class car{
public car(int m){
//
}
}
class Benz extends car{
public Benz(int c){
super(m);//调用超类的构造函数
}
}
}