Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PlenumHeute {
- public String print(A a){
- return "Parametertyp A: " + a.getA(); //ueberladung
- }
- public String print(B b){
- return "Parametertyp B: " + b.getA(); //mit gleich Parameter überSCHREIBEN
- }
- public static void main(String[] args) {
- A o1 = new A(2);
- B o2 = new B(3);
- A o3 = new B(4);
- System.out.println(o1.m() + o2.m());
- System.out.println(o2.m() + o3.m());
- System.out.println(o2.n());//kmt 2 raus weil die Klasse B auf methode n in der Klasse A spezialisiert
- PlenumHeute plenum = new PlenumHeute();
- System.out.println(plenum.print(o1)); //o1 hat der Typ A deswegen der Kompiler gibt 2 aus. getA wird hier angerufen beim ausführen
- System.out.println(plenum.print(o2)); //typ B ist hier ausgewählt (überladung). ruft der Kompiler super(a) auf. a ist noch nicht hier initialisiert, deswegen gibt in der Konsole defaultwert 0 aus.
- System.out.println(plenum.print(o3)); //Der Komplier sich entscheidet für der variablen Typ A in dem Fall. Ruft die GetA in der Klasse B auf, aber gibt es 0 aus.
- System.out.println(o1.add(o1)); //Ruft der Komplier Klasse A, auf getA() wird angerufen (this.a hier hat 2). Deswegen 2+2 = 4 kommt in der Konsole aus.
- System.out.println(o1.add(o2)); //o1 in der variablen Typ A wird angerufen. Aber findet der Komplier nur ein einzige variante, nämlich o1 (2). GetA() in der Klasse1 wird angerufen. (methode-überschreibung!)
- System.out.println(o2.add(o3)); //überladung - add methode in der Klasse A wird angerufen, aber getA() hier wird überschrieben d.h. inplementierung von der Typ B ist hier drin. deswegen 3 kommt in der Console aus.
- System.out.println(o2.add(o2)); //alles von der Klasse B werden angerufen, this.a in der Klasse B hat wert 0 auch b.getA() hat wert 0.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment