4.12 superキーワード

2439 ワード

サブクラスの中で考えたら
布団類に隠されたメンバー変数や方法を使ってキーワードスーパーを使うことができます.
1.キーワードsuperを使って親の構造方法を呼び出します.  サブクラスは、親の構造方法を使用するには、キーワードsuperを使用して表示する必要があります.
サブクラスの構造方法でなければいけません.最初のステートメントです.
例: 
class Student{        
    int number;
    String name;
    Student(){ //        ,      super ,    
    }
    Student(int number,String name){        
        this.number=number;
        this.name=name;
        System.out.println("I am "+name+" my number is "+number);
    }
}
class UStudent extends Student{        
    boolean marry;
    UStudent(int number,String name,boolean b){        
        super(number,name);//super                
        marry=b;
        System.out.println("  ="+marry);
    }
}
public class SuperExample{        
    public static void main(String args[]){        
        UStudent zhang=new UStudent(203," ",false);
    }
}
/*  
I am   my number is 203  
  =false  
*/
注:サブクラスの構造方法において、親クラスのある構造方法をキーワードsuperで起動しない場合、デフォルトでは 
super();
文、つまり
親類のパラメータなしの構造方法を呼び出します.
もし父方
1つ以上の構成方法を定義し、
では、Javaはデフォルトの構造方法(パラメータなしの構造方法)を提供しないので、親類に複数の構造方法が定義されると、
パラメータなしの構造方法を含むべきである.
サブクラスでsuperを省略するとエラーが発生します. 
2.キーワードスーパーを使って、隠されたメンバー変数と方法を操作します.  たとえば:
super.x、super.play()
例:
class Sum{        
    int n;
    float f(){        
        float sum=0;
        for(int i=0;i<=n;i++)
        sum+=i;
        return sum;
    }
}
class Average extends Sum{        
    int n;
    float f(){        
        float c;
        super.n=n;
        c=super.f();
        return c/n;
    }
    float g(){        
        float c;
        c=super.f();
        return c/2;
    }
}
public class SuperExample2{        
    public static void main(String args[]){        
        Average aver = new Average();
        aver.n=100;
        float result1=aver.f();//     , result2=0.0
        float result2=aver.g();
        System.out.println("result1="+result1);
        System.out.println("result2="+result2);
    }
}
/*  
result1=50.5
result2=2525.0
*/