morry2341

PlenumMainKlasse

Dec 12th, 2022
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.87 KB | None | 0 0
  1. public class PlenumHeute {
  2.  
  3.     public String print(A a){
  4.         return "Parametertyp A: " + a.getA(); //ueberladung
  5.     }
  6.  
  7.     public String print(B b){
  8.         return "Parametertyp B: " + b.getA(); //mit gleich Parameter überSCHREIBEN
  9.     }
  10.     public static void main(String[] args) {
  11.         A o1 = new A(2);
  12.         B o2 = new B(3);
  13.         A o3 = new B(4);
  14.  
  15.         System.out.println(o1.m() + o2.m());
  16.  
  17.         System.out.println(o2.m() + o3.m());
  18.         System.out.println(o2.n());//kmt 2 raus weil die Klasse B auf methode n in der Klasse A spezialisiert
  19.  
  20.         PlenumHeute plenum = new PlenumHeute();
  21.  
  22.         System.out.println(plenum.print(o1)); //o1 hat der Typ A deswegen der Kompiler gibt 2 aus. getA wird hier angerufen beim ausführen
  23.         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.
  24.         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.
  25.  
  26.         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.
  27.         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!)
  28.  
  29.         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.
  30.         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.
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment