Ich muss ein Projekt mit den aufgeführten Eigenschaften der objektorientierten Programmierung mit Java erstellen.Java-Beispiel mit Kapselung, Polymorphie und Vererbung?
Könnte jemand über mein schnelles Beispielprogramm schauen, um zu bestätigen, dass ich verstehe, wie diese Merkmale implementiert sind und dass sie alle vorhanden und korrekt ausgeführt sind?
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.");
}
}
Sie haben Vererbung und Einkapselung, aber Sie haben keinen Polymorphismus. Ihr eigener Code-Kommentar erklärt warum: Die Methode sollte den gleichen Namen haben. Es tut es nicht. Verwenden Sie immer die Annotation @Override, wenn Sie eine Methode überschreiben möchten. –
Nicht sicher, ob Überladung eine Möglichkeit ist, Polymorphismus zu präsentieren ([wahrscheinlich nicht] (http://stackoverflow.com/questions/824763/is-polymorphism-another-term-for-overloading)). Wenn ich dich habe, würde ich versuchen, es mit einem Override wie in [diesem Beispiel] darzustellen (http://stackoverflow.com/questions/154577/polymorphism-vs-overriding-vs-overloading). – Pshemo
Rufen Sie auch nicht 'getVal()' eine Methode auf, die nichts erhält, sondern sie stattdessen ausgibt. Getter und Setter sind eine etablierte Konvention in Java, und Ihre Methode getVal() wird wie ein Getter benannt, ist aber keiner. Wenn es ein Getter wäre, würde es zurückgeben, was durch die entsprechende Setter-Methode ('setVal()') eingestellt wurde. –