私はJavaを使ってオブジェクト指向プログラミングの特性を列挙したプロジェクトを作成する必要があります。カプセル化、多形性、および継承を特徴とするJavaの例ですか?
クイックサンプルプログラムを見て、これらの特性がどのように実装されているか、そしてそれらがすべて存在し、正しく実行されていることを理解できることを確認できますか?
package Example;
public class Parent {
private int a;
public void setVal(int x){
a = x;
}
public void getVal(){
System.out.println("value is "+a);
}
}
public class Child extends Parent{
//private fields indicate encapsulation
private int b;
//Child inherits int a and getVal/setVal methods from Parent
public void setVal2(int y){
b = y;
}
public void getVal2(){
System.out.println("value 2 is "+b);
}
//having a method with the same name doing different things
//for different parameter types indicates overloading,
//which is an example of polymorphism
public void setVal2(String s){
System.out.println("setVal should take an integer.");
}
}
あなたには継承とカプセル化がありますが、多型はありません。あなた自身のコードコメントは、その理由を説明しています:メソッドは同じ名前を持つ必要があります。それはしません。メソッドをオーバーライドする場合は、必ず@Overrideアノテーションを使用してください。 –
オーバーロードがポリモーフィズムを提示する方法であるかどうかは不明です([おそらく](http://stackoverflow.com/questions/824763/is-polymorphism-another-term-for-overloading))。私があなたのことを知っていれば、私は[この例では](http://stackoverflow.com/questions/154577/polymorphism-vs-overriding-vs-overloading)のようにオーバーライドして表示しようとします。 – Pshemo
また、getVal()は何も取得しないメソッドを呼び出すのではなく、代わりに出力します。 gettersとsetterは、Javaではよく確立された規約であり、getVal()メソッドはゲッターのように名付けられますが、それは1つではありません。それがゲッターであれば、対応するセッターメソッド( 'setVal()')によって設定されたものを返します。 –