verebung
parent
d213d58262
commit
65ab8b6981
|
@ -0,0 +1,27 @@
|
|||
package VorlesungsFolien.Verebung;
|
||||
|
||||
public class A {
|
||||
|
||||
void f() {
|
||||
System.out.println("A");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
A a1 = new A();
|
||||
A a2 = new B();
|
||||
B b = new B();
|
||||
|
||||
a1.f();
|
||||
// Ausgabe B:
|
||||
// Das passiert aufgrund des Konzepts des Polymorphismus
|
||||
// Dies liegt am Prinzip der dynamischen Bindung
|
||||
a2.f();
|
||||
}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
|
||||
void f() {
|
||||
System.out.println("B");
|
||||
}
|
||||
}
|
|
@ -6,29 +6,75 @@ public class Firma {
|
|||
private ArrayList<Mitarbeiter> mas = new ArrayList<>();
|
||||
|
||||
public static void main(String[] args) {
|
||||
Mitarbeiter mi = new Mitarbeiter("Müller", "27.10.1972");
|
||||
Manager ma = new Manager("Stromberg", "01.02.1970", "Finanzen");
|
||||
Mitarbeiter mi = new Manager("Stromberg", "01.02.1970", "Finanzen");
|
||||
Manager ma = new Geschaeftsfuehrer();
|
||||
Mitarbeiter m = new Geschaeftsfuehrer();
|
||||
|
||||
Firma hal = new Firma();
|
||||
|
||||
hal.mitarbeiterEinstellen(mi);
|
||||
hal.mitarbeiterEinstellen(ma);
|
||||
|
||||
Mitarbeiter mi2 = new Mitarbeiter("Mayer", "12.12.1999");
|
||||
hal.mitarbeiterEinstellen(mi2);
|
||||
|
||||
// ma = mi; // geht nicht!
|
||||
// Ja weil Manager ein Mitarbeiter ist
|
||||
if (mi instanceof Mitarbeiter )
|
||||
System.out.println("Ja ");
|
||||
|
||||
// Ja weil Manager ein Manager ist
|
||||
if (mi instanceof Manager )
|
||||
System.out.println("Ja stimmt");
|
||||
|
||||
// nein, weil nicht jeder manager ein Geschaeftsfuehrer ist, aber jeder Geschaeftsfuehrer ist ein manager
|
||||
if (mi instanceof Geschaeftsfuehrer)
|
||||
System.out.println("Ja");
|
||||
|
||||
if (null instanceof Geschaeftsfuehrer )
|
||||
System.out.println("null");
|
||||
|
||||
if (null instanceof Mitarbeiter )
|
||||
System.out.println("null");
|
||||
|
||||
if (null instanceof Manager )
|
||||
System.out.println("null");
|
||||
|
||||
if (ma instanceof Geschaeftsfuehrer)
|
||||
System.out.println("Ja");
|
||||
|
||||
mi = ma;
|
||||
|
||||
//ma = mi; nein, weil nicht jeder mitarbeiter ein manager ist!
|
||||
|
||||
Mitarbeiter mitarbeiter = new Mitarbeiter("Müller", "27.10.1972");
|
||||
Manager manager = new Manager("Stromberg", "01.02.1970", "Finanzen");
|
||||
|
||||
|
||||
Firma firma = new Firma();
|
||||
|
||||
firma.mitarbeiterEinstellen(mitarbeiter);
|
||||
firma.mitarbeiterEinstellen(manager);
|
||||
|
||||
Mitarbeiter mitarbeiter2 = new Mitarbeiter("Mayer", "12.12.1999");
|
||||
firma.mitarbeiterEinstellen(mitarbeiter);
|
||||
|
||||
/* geht nicht! Warum?
|
||||
* weil nicht jeder mitarbeiter ein manager ist!
|
||||
*/
|
||||
// manager = mitarbeiter; //geht nicht!
|
||||
|
||||
|
||||
|
||||
//weil jeder manager ist ein mitarbeiter
|
||||
mitarbeiter = manager;// Ja geht:
|
||||
System.out.println("Polymorphismus");
|
||||
System.out.println(mi.getGehalt());
|
||||
System.out.println(ma.getAbteilung());
|
||||
// System.out.println(mi.getAbteilung()); // geht nicht, wg. statischem Typ Mitarbeiter
|
||||
System.out.println(mitarbeiter.getGehalt());
|
||||
System.out.println(manager.getAbteilung());
|
||||
// System.out.println(mitarbeiter.getAbteilung()); // geht nicht, wg. statischem Typ Mitarbeiter
|
||||
|
||||
if (mi instanceof Manager)
|
||||
System.out.println( ((Manager)mi).getAbteilung() );
|
||||
if (mitarbeiter instanceof Manager)
|
||||
System.out.println( ((Manager)mitarbeiter).getAbteilung() );
|
||||
|
||||
((Manager)mi2).getAbteilung();
|
||||
// ClassCastException zur laufzeit, weil ich if (mitarbeiter instanceof Manager) verwenden soll
|
||||
((Manager)mitarbeiter2).getAbteilung();
|
||||
|
||||
// WICHTIG:
|
||||
//instanceof prüft, ob die klasse manager die klasse mitarbeiter erbt
|
||||
}
|
||||
|
||||
private void mitarbeiterEinstellen(Mitarbeiter m) {
|
||||
|
@ -65,6 +111,10 @@ class Mitarbeiter extends Object {
|
|||
this.gehalt = gehalt;
|
||||
this.geburtsdatum = geburtsdatum;
|
||||
}
|
||||
|
||||
public Mitarbeiter() {
|
||||
|
||||
}
|
||||
|
||||
public String getDetails() {
|
||||
return name;
|
||||
|
@ -86,7 +136,11 @@ class Manager extends Mitarbeiter {
|
|||
super(name, 65000, geburtsdatum); // das MUSS zuerst gemacht werden!
|
||||
this.abteilung = abteilung;
|
||||
}
|
||||
|
||||
|
||||
public Manager() {
|
||||
|
||||
}
|
||||
|
||||
public String getDetails() {
|
||||
return super.getDetails() + " " + abteilung;
|
||||
}
|
||||
|
@ -95,3 +149,19 @@ class Manager extends Mitarbeiter {
|
|||
return abteilung;
|
||||
}
|
||||
}
|
||||
|
||||
class Geschaeftsfuehrer extends Manager{
|
||||
|
||||
public Geschaeftsfuehrer(String name, String geburtsdatum, String abteilung) {
|
||||
super(name, geburtsdatum, abteilung);
|
||||
}
|
||||
|
||||
public Geschaeftsfuehrer(){
|
||||
|
||||
}
|
||||
|
||||
public void printGeschaeftsfuehrer() {
|
||||
System.out.println("Hi");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue