Javaで、既存のクラスにいくつかのフィールドとメソッドを追加する方法はありますか?私が欲しいのは、コードにインポートしたクラスがあり、既存のフィールドから派生したいくつかのフィールドとその戻りメソッドを追加する必要があるということです。これを行う方法はありますか?
機能を追加したいクラスを拡張するクラスを作成できます:
public class sub extends Original{
...
}
スーパークラスのプライベート変数にアクセスするには、ゲッターメソッドがない場合、「プライベート」から「保護」に変更し、通常どおり参照できるようにします。
お役に立てば幸いです!
Javaでクラスを拡張できます。例えば:
public class A {
private String name;
public A(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
public class B extends A {
private String title;
public B(String name, String title){
super(name); //calls the constructor in the parent class to initialize the name
this.title= title;
}
public String getTitle(){
return this.title;
}
public void setTitle(String title) {
this.title= title;
}
}
これで、B
のインスタンスがA
のパブリックフィールドにアクセスできます。
B b = new B("Test");
String name = b.getName();
String title = b.getTitle();
より詳細なチュートリアルについては、 継承(Javaチュートリアル> Learning the Java Language> Interfaces and Inheritance) をご覧ください。
Edit:クラスA
に次のようなコンストラクタがある場合:
public A (String name, String name2){
this.name = name;
this.name2 = name2;
}
クラスB
には次のものがあります。
public B(String name, String name2, String title){
super(name, name2); //calls the constructor in the A
this.title= title;
}
例は、拡張するクラスがfinalでない場合にのみ実際に適用されます。たとえば、このメソッドを使用してJava.lang.Stringを拡張することはできません。ただし、CGLIB、ASMまたはAOPを使用したバイトコードインジェクションの使用など、他の方法もあります。