呉ユーキション - 学習の自然生まれのJAVA開発:多型

親のp = 新しい子供();
パブリック クラスがテスト{
     公共 静的 ボイドメイン(文字列[]引数){ 
      ショーが(新しい新しい猫());   // メソッドを呼び出すために猫のオブジェクトを表示するように 
      表示を(新しい新しい犬());   // 犬オブジェクトメソッドを呼び出して表示するために
                
      動物Aが = 新しい新しい猫();   // アップキャスト   
      a.eat();                // 呼び出しは猫EATある 
      ;カタログC =(CAT)         // 下方遷移   
      c.workを();         // 呼び出しは、猫の作品
  }   
            
    パブリック 静的 ボイド表示(動物A){
      a.eat();   
        // 判定型
        IFinstanceofの CAT){   // ネコ行う 
            猫C = ;(CAT)A   
            c.work()を;   
        } そう IFinstanceofの犬){ // 犬がやっ物事 
            犬C = (イヌ);   
            c.work();   
        }   
    }   
} 
 
抽象 クラス動物{  
     抽象 ボイド(EAT);   
}   
  
クラスキャットザが延びる動物{  
     公共 ボイドEAT(){  
        System.out.println( "FISH" );   
    }   
    公共 ボイドワーク(){   
        System.out.printlnは( "及びマウス" );   
    }   
}   
  
クラス延び動物を{  
     公共 ボイド{)(EAT   
        (のSystem.out.printlnを "骨を食べる" );   
    }   
    公共 ボイドワーク(){   
        System.out.printlnは( "ハウスキーピング" );   
    }   
}
パブリック クラス従業員{
    プライベート文字列名;
   プライベート文字列のアドレス。
   プライベート int型の数。
   公共の従業員(文字列名、文字列アドレス、INTの数){ 
      するSystem.out.println( "従業員构造函数" )。
      この .nameの= 名前;
      この .address = アドレス。
      この .NUMBER = 数; 
   } 
   公共 ボイドMAILCHECK(){ 
      System.out.printlnは( "邮寄支票给:" + この.nameの
        + "" + この。住所); 
   } 
   パブリック文字列のtoString(){
       戻り名+ "" +アドレス+ "" + 数。
   } 
   パブリック文字列のgetName(){
       戻り名。
   } 
   パブリック文字列のgetAddress(){
       リターンアドレス。
   } 
   公共 ボイドsetAddress(文字列newAddress){ 
      アドレス = newAddress。
   } 
   公共 INT はgetNumber(){
      戻り番号; 
   } 
}
パブリック クラスは、給与のインクルードは、拡張し、従業員
{ 
   プライベート ダブル給料を; // 年俸
   公共給与(文字列名、文字列のアドレス、int型の数、ダブル給料){
        スーパー(名前、住所、番号); 
       setSalary(給与); 
   } 
   パブリック 無効MAILCHECK( ){ 
       のSystem.out.println( "給与MAILCHECKクラスメソッド" 
       のSystem.out.println( "への配信をチェック:" + のgetName()
        + "賃金:" + 給与); 
   } 
   公共 ダブルgetSalary(){
        戻り給与。
   } 
   公共 ボイド setSalary(ダブルnewSalary){
        場合(newSalary> = 0.0 ){ 
          給与 = newSalary。
       } 
   } 
   公共 ダブルcomputePay(){ 
      System.out.printlnは( "计算工资、付给:" + のgetName())。
      返す給与/ 52 ; 
   } 
}
パブリック クラスVirtualDemo {
    公共 静的 ボイドメイン(文字列[]引数){ 
      給与S = 新しい新給与(「従業員A」、「北京」,. 3、3600.00 ); 
      従業員E = 新しい新給与(「社員B」、「上海」、 2、2400.00 
      のSystem.out.println( "MAILCHECKを使用して給与呼番号- " ); 
      s.mailCheck(); 
      のSystem.out.println( "従業員mailCheck--を使用して\ N-基準コール" ); 
      E .mailCheck(); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/tszr/p/10966624.html