diff --git a/src/org/eidecker/oca8lernen/general/Overloading.java b/src/org/eidecker/oca8lernen/general/Overloading.java index e978b9f..53b09be 100644 --- a/src/org/eidecker/oca8lernen/general/Overloading.java +++ b/src/org/eidecker/oca8lernen/general/Overloading.java @@ -10,12 +10,36 @@ import static org.eidecker.oca8lernen.general.PrimitiveOverloading.*; import static org.eidecker.oca8lernen.general.Overloading.*; import static org.junit.jupiter.api.Assertions.assertEquals; +class OverloadingTester { + + @Test + public void testStaticAccessFromSubclass() { + Overloading overloading = new SubOverloading(); + System.out.println(overloading.staticString); + System.out.println(overloading.overrideStatic()); + + SubOverloading subOverloading = new SubOverloading(); + System.out.println(subOverloading.staticString); + System.out.println(subOverloading.overrideStatic()); + } +} + public class Overloading { + public static String staticString = "Hallo Overloadung"; + + public static String overrideStatic() { + return "Hello static Overloading"; + } + public final String overrideMe(List list) { return list.toString(); } + public String overrideMeNonFinal(List list) { + return "Oberklasse"; + } + public String overloadMe() { return "1"; } @@ -34,6 +58,20 @@ public class Overloading { return null; } + /** + * Diese Methode kann man nicht überschreiben. + */ + public final String tryToOverrideMe() { + return "I am from class Overloading"; + } + + /** + * Diese Methode kann man nicht überschreiben. + */ + private final String tryToOverrideMePrivate() { + return "I am from class Overloading"; + } + // Rückgabewert irrelevant bei Überladen /*public ArrayList overloadList(List list) { return null; @@ -45,6 +83,17 @@ public class Overloading { class SubOverloading extends Overloading { public static final String VARIANTE_CHARACTER = "Variante Character"; + public static String staticString = "Hallo SubOverloading"; + +// public static String overrideStatic() { +// return "Hello static SubOverloading"; +// } + + // @Override: Ist nicht Überschrieben, da anderer Parameter. Ist überladen! + public String overrideMeNonFinal(ArrayList list) { + return "Unterklasse"; + } + /** * Nicht erlaubt, da aus Oberklasse überladen. Rückgabewert kann nicht * überladen werden. @@ -52,6 +101,8 @@ class SubOverloading extends Overloading { //public List overloadMe(List list) { //} + + /** * Neue Methode, nicht überschrieben. Daher Access-Modifier in Ordnung. */ @@ -59,6 +110,24 @@ class SubOverloading extends Overloading { return "Geht"; } + /** + * Geht, da Methode zwar in der Oberklasse, dort aber private ist und damit nicht sichtbar + */ + private final String tryToOverrideMePrivate() { + super.overrideStatic(); + return "I am from class Overloading"; + } + + /** + * Geht nicht, auch wenn die Methode private ist und damit nicht von außen sichtbar. + * @return + */ +// private String tryToOverrideMe() { +// +// } + + + /** * Nicht erlaubt, da Überschreiben verboten durch final. * Sichtbarkeit ändert nichts.