クレイジーjava学習ノート1005---ローカル内部クラス&&匿名内部クラス

9335 ワード

ローカル内部クラス:
1.ローカル内部クラス(外部クラスメソッドで)は、そのメソッドのみ有効です.アクセス制御子とstatic修飾子は使用できません.
 
匿名の内部クラス:
匿名の内部クラスフォーマットを定義するには、次の手順に従います.
 new親コンストラクタ(実パラメトリックリスト)|実装インタフェース()
{
    匿名の内部クラスボディ部分
}
1、匿名内部クラスを作成すると、すぐにクラスのインスタンスが作成されます.このクラス定義はすぐに消え、匿名内部クラスは再利用できません.匿名の内部クラスは、親クラスを継承するか、インタフェースを実装する必要がありますが、最大1つの親クラスまたは1つのインタフェースしか継承できません.
例:
 

  
  
  
  
  1. interface Product 
  2.     public double getPrice(); 
  3.     public String getName();     
  4. public class AnonymousTest 
  5.     public void test(Product p) 
  6.     { 
  7.         System.out.println(" "+ p.getName() + ",  " + p.getPrice()); 
  8.     }    
  9.     public static void main(String[] args) 
  10.     { 
  11.         AnomymousTest ta = new AnomymousTest(); 
  12.         // test , Product ,  
  13.         ta.test(new Product() 
  14.         { 
  15.             public double getPrince() 
  16.             { 
  17.                 return 567.8;    
  18.             }    
  19.             public String getName() 
  20.             { 
  21.                 return "AGP  ";     
  22.             } 
  23.         })   
  24.     } 

匿名内部クラスを定義するにはclassキーは必要ありません.匿名内部クラスを定義するときに、匿名内部クラスのオブジェクトを直接生成します.
*匿名の内部クラスは、抽象的な親またはインタフェースに含まれるすべての抽象的なメソッドを実装する必要があります.*
匿名の内部クラスは抽象的ではなく、コンストラクタを定義することはできません.
匿名の内部クラスには暗黙的なコンストラクタが1つしかありません.newインタフェースのカッコにはパラメータ値が入力されません.
親を継承して匿名の内部クラスを作成する場合、この匿名の内部クラスには親と同じパラメータのリストがあります.
例:
 

  
  
  
  
  1. abstract class Device 
  2.     private String name; 
  3.     public abstract double getPrice(); 
  4.     public Device(){} 
  5.     public Device(String name) 
  6.     { 
  7.         this.name = name;    
  8.     }    
  9.     public void setName(String name) 
  10.     { 
  11.         this.name = name; 
  12.     } 
  13.     public String getName() 
  14.     { 
  15.         return  name; 
  16.     } 
  17. public class AnnoymousInner 
  18.     public void test(Device d) 
  19.     { 
  20.         System.out.println("  " + d.getName() + ",  " + d.Price())     
  21.     }    
  22.     public static void main(String[] args) 
  23.     { 
  24.         AnnoymousInner ai = new AnnoymousInner(); 
  25.         // Device  
  26.         ai.test(new Device(" "
  27.         { 
  28.             public double getPrince() 
  29.             { 
  30.                 return 67.8;     
  31.             } 
  32.         }); 
  33.         // Device  
  34.         Device d = new Device() 
  35.         { 
  36.             //  
  37.             { 
  38.                 System.out.println(" 。。。");     
  39.             }    
  40.             //  
  41.             public double getPrince() 
  42.             { 
  43.                 return 56.2;     
  44.             } 
  45.             //  
  46.             public String getName() 
  47.             { 
  48.                 return " "
  49.             } 
  50.         }; 
  51.         ai.test(d); 
  52.     } 

 
本文は“javaプログラム猿のブログ”のブログから出て、転載して作者と連絡してください!