JAva匿名内部クラスとは、匿名内部クラスとは何か、匿名内部クラスをどのように定義するか、匿名内部クラスをどのように使用するか.


JAva匿名内部クラス
  • 匿名の内部クラスとは何ですか?
  • 匿名内部クラスの使用シーン?
  • 匿名の内部クラスはどのように作成されますか?
  • 匿名内部クラスの実装と
  • の使用
  • 例1(実装インタフェース)
  • 例2(継承クラス)

  • 匿名の内部クラスとは?
    匿名の内部類は、その名の通り、この類がいったいどんな名前なのか、つまり類名を知らない.
    匿名の内部クラスの使用シーン?
    匿名内部クラスは、一度だけ使用するクラス、すなわち匿名内部クラスを作成するには、一度だけ使用するクラスを作成するのに適しています.
    匿名の内部クラスはどのように作成しますか?
    new   (  ) |     ()
    {
    //           
    }
              ,             ,       ,           ,        。
        :
    	           。
    	            。           ,         ,            ,                     。
    

    匿名の内部クラスの実装と使用
    例1(実装インタフェース)
    まず、匿名クラスが実装するインタフェースを定義します.コードは次のとおりです.
    public interface Product{
         
     double getPrice();
     double getName();
    

    次に、エンティティクラスを定義し、エンティティクラスはメソッドを定義し、メソッドのパラメータは上記のインタフェースオブジェクトであり、その時に匿名クラスオブジェクトが転送され、この匿名クラスは上記で作成したインタフェースを実現し、コードは以下の通りである.
    public class Anony{
         
    	public void test(Product product){
         
    	System.out.println("     "+product.getName()+",   "+product.getPrice());
    	}
    }
    

    最終テストの実行:
    pubic class Test{
         
    	public static void main(String[] args){
         
    		Anony anony=new anony();
    		//   ,            
    		anony.test(new Product(){
         
    			@Override
    			public double getPrice(){
         
    					return 578.6;
    				}
    			@Override
    			public String getName(){
         
    					return "     ";
    				}
    			}
    		);
    	}
    }
    

    出力:
    578.6
    

    まとめ:ここで匿名の内部クラスの役割は、インタフェースを実装し、インタフェースを実装したクラスのオブジェクトを作成し、このインタフェースのメソッドを書き換えることです.
    例2(継承クラス)
    まず、匿名クラスが実装する必要がある抽象クラスを定義します.コードは次のとおりです.
    public abstract class Device{
         
    	private String name;
    	public abstract double  getPrice();
    	public String getName(){
         
    	 	return name;
    	}
    	public Device(){
         }
    	public Device(String name){
         
    		this.name=name;
    	}
    } 
    

    次に、エンティティクラスを定義し、エンティティクラスはメソッドを定義し、メソッドのパラメータは上記の抽象クラスオブジェクトであり、その時に匿名クラスオブジェクトが渡されます.この匿名クラスは上記で作成した抽象クラスを継承し、コードは以下の通りです.
    public class Device{
         
    	public void test(Device device){
         
    		System.out.println("     "+device.getName()+"   "+device.getPrice());
    	}
    }
    
    

    最終テストの実行:
    pubic class Test{
         
    	public static void main(String[] args){
         
    		Anony anony=new anony();
    		//   ,            
    		anony.test(new Device("     "){
         
    			@Override
    			public double getPrice(){
         
    					return 578.6;
    				}
    		);
    		Device device=new Device(){
         
    			@Override
    			public double getPrice(){
         
    				return 556.56;
    			}
    			@Override
    			public String getName(){
         
    				return "     ";
    			}
    		};
    		annoy.test(device);
    	}
    }
    

    出力:
    578.6556.56
    

    まとめ:オブジェクト匿名クラスには抽象クラスが継承され、抽象クラス内の抽象メソッドについては、書き直さなければならない.オブジェクト抽象クラス内の非抽象メソッドは、書き換えても書き換えなくてもよい.