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<>();
|
private ArrayList<Mitarbeiter> mas = new ArrayList<>();
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Mitarbeiter mi = new Mitarbeiter("Müller", "27.10.1972");
|
Mitarbeiter mi = new Manager("Stromberg", "01.02.1970", "Finanzen");
|
||||||
Manager ma = 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;
|
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("Polymorphismus");
|
||||||
System.out.println(mi.getGehalt());
|
System.out.println(mitarbeiter.getGehalt());
|
||||||
System.out.println(ma.getAbteilung());
|
System.out.println(manager.getAbteilung());
|
||||||
// System.out.println(mi.getAbteilung()); // geht nicht, wg. statischem Typ Mitarbeiter
|
// System.out.println(mitarbeiter.getAbteilung()); // geht nicht, wg. statischem Typ Mitarbeiter
|
||||||
|
|
||||||
if (mi instanceof Manager)
|
if (mitarbeiter instanceof Manager)
|
||||||
System.out.println( ((Manager)mi).getAbteilung() );
|
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) {
|
private void mitarbeiterEinstellen(Mitarbeiter m) {
|
||||||
|
@ -65,6 +111,10 @@ class Mitarbeiter extends Object {
|
||||||
this.gehalt = gehalt;
|
this.gehalt = gehalt;
|
||||||
this.geburtsdatum = geburtsdatum;
|
this.geburtsdatum = geburtsdatum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Mitarbeiter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public String getDetails() {
|
public String getDetails() {
|
||||||
return name;
|
return name;
|
||||||
|
@ -86,7 +136,11 @@ class Manager extends Mitarbeiter {
|
||||||
super(name, 65000, geburtsdatum); // das MUSS zuerst gemacht werden!
|
super(name, 65000, geburtsdatum); // das MUSS zuerst gemacht werden!
|
||||||
this.abteilung = abteilung;
|
this.abteilung = abteilung;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Manager() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public String getDetails() {
|
public String getDetails() {
|
||||||
return super.getDetails() + " " + abteilung;
|
return super.getDetails() + " " + abteilung;
|
||||||
}
|
}
|
||||||
|
@ -95,3 +149,19 @@ class Manager extends Mitarbeiter {
|
||||||
return abteilung;
|
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