JAva匿名内部クラスとは、匿名内部クラスとは何か、匿名内部クラスをどのように定義するか、匿名内部クラスをどのように使用するか.
12226 ワード
JAva匿名内部クラス匿名の内部クラスとは何ですか? 匿名内部クラスの使用シーン? 匿名の内部クラスはどのように作成されますか? 匿名内部クラスの実装と の使用 例1(実装インタフェース) 例2(継承クラス)
匿名の内部クラスとは?
匿名の内部類は、その名の通り、この類がいったいどんな名前なのか、つまり類名を知らない.
匿名の内部クラスの使用シーン?
匿名内部クラスは、一度だけ使用するクラス、すなわち匿名内部クラスを作成するには、一度だけ使用するクラスを作成するのに適しています.
匿名の内部クラスはどのように作成しますか?
匿名の内部クラスの実装と使用
例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.6
, 556.56
まとめ:オブジェクト匿名クラスには抽象クラスが継承され、抽象クラス内の抽象メソッドについては、書き直さなければならない.オブジェクト抽象クラス内の非抽象メソッドは、書き換えても書き換えなくてもよい.