This commit is contained in:
Sebastian Eidecker
2019-11-07 22:56:50 +01:00
parent 3b47113d17
commit e0dafd9d7c

View File

@@ -10,12 +10,36 @@ import static org.eidecker.oca8lernen.general.PrimitiveOverloading.*;
import static org.eidecker.oca8lernen.general.Overloading.*; import static org.eidecker.oca8lernen.general.Overloading.*;
import static org.junit.jupiter.api.Assertions.assertEquals; 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 class Overloading {
public static String staticString = "Hallo Overloadung";
public static String overrideStatic() {
return "Hello static Overloading";
}
public final String overrideMe(List list) { public final String overrideMe(List list) {
return list.toString(); return list.toString();
} }
public String overrideMeNonFinal(List list) {
return "Oberklasse";
}
public String overloadMe() { public String overloadMe() {
return "1"; return "1";
} }
@@ -34,6 +58,20 @@ public class Overloading {
return null; 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 // Rückgabewert irrelevant bei Überladen
/*public ArrayList overloadList(List list) { /*public ArrayList overloadList(List list) {
return null; return null;
@@ -45,6 +83,17 @@ public class Overloading {
class SubOverloading extends Overloading { class SubOverloading extends Overloading {
public static final String VARIANTE_CHARACTER = "Variante Character"; 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 * Nicht erlaubt, da aus Oberklasse überladen. Rückgabewert kann nicht
* überladen werden. * überladen werden.
@@ -52,6 +101,8 @@ class SubOverloading extends Overloading {
//public List overloadMe(List list) { //public List overloadMe(List list) {
//} //}
/** /**
* Neue Methode, nicht überschrieben. Daher Access-Modifier in Ordnung. * Neue Methode, nicht überschrieben. Daher Access-Modifier in Ordnung.
*/ */
@@ -59,6 +110,24 @@ class SubOverloading extends Overloading {
return "Geht"; 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. * Nicht erlaubt, da Überschreiben verboten durch final.
* Sichtbarkeit ändert nichts. * Sichtbarkeit ändert nichts.