Polymorphe Verhaltensweisen
Verwenden Sie Polymorphie, um gemischte Formen auszugeben, zu sortieren und zusammenzufassen. Halten Sie Algorithmen für mobile Geräte klein und gut lesbar.
Polymorphe Verhaltensweisen ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 3 Lektionen.
Überblick
Polymorphes Verhalten ermöglicht es, alle Formen gleich zu behandeln, während jede ihre eigenen Berechnungen ausführt. Wir werden (1) eine gemischte Liste einheitlich ausgeben, (2) nach area sortieren und (3) in einer Schleife Summen berechnen.
Checkliste für die Basis-API
Basis-API enthält die überall verwendeten Aktionen:
- area() und perimeter() – müssen von jeder Form implementiert werden.
- Optional eine kleine Hilfsmethode wie label() oder info() für eine übersichtliche Ausgabe.
- Felder innerhalb der konkreten Formen belassen.
Code: Einheitliche Ausgabe
Einheitliche Ausgabe: Die Schleife verwendet nur die Shape-API. Jedes Objekt führt seine eigene Implementierung der Berechnungen aus.
public class Main {
static abstract class Shape {
abstract double area();
abstract double perimeter();
String label() { return getClass().getSimpleName(); }
String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
}
static class Circle extends Shape {
double r; Circle(double r) { this.r = (r < 0) ? 0 : r; }
double area() { return Math.PI * r * r; }
double perimeter() { return 2 * Math.PI * r; }
}
static class Rectangle extends Shape {
double w, h; Rectangle(double w, double h) { this.w = Math.max(0, w); this.h = Math.max(0, h); }
double area() { return w * h; }
double perimeter() { return 2 * (w + h); }
}
public static void main(String[] args) {
Shape[] list = { new Circle(2.0), new Rectangle(3.0, 4.0), new Circle(1.0) };
for (int i = 0; i < list.length; i = i + 1) {
Shape s = list[i];
System.out.println(s.label() + " -> " + s.info());
}
}
}
Nach Fläche sortieren (Idee)
Sortieridee:
- Vergleich: Vergleichen Sie die area()-Werte zweier Formen.
- Für kleine Datenmengen reicht eine einfache Bubble-/Selection-Sortierung aus.
- Verwenden Sie nur Shape-Methoden, ohne Typprüfungen.
Code: Nach Fläche sortieren
Einfache Sortierung: Sie erfordert nur den Aufruf von area(). Es gibt keine Typprüfung – genau darin liegt die Stärke der Polymorphie.
public class Main {
static abstract class Shape { abstract double area(); abstract double perimeter(); String label(){ return getClass().getSimpleName(); } }
static class Circle extends Shape { double r; Circle(double r){ this.r = Math.max(0, r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }
// Very small bubble sort for beginners (ascending by area)
static void sortByArea(Shape[] arr){
for(int pass=0; pass<arr.length-1; pass=pass+1){
for(int i=0; i<arr.length-1; i=i+1){
if(arr[i].area() > arr[i+1].area()){
Shape tmp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = tmp;
}
}
}
}
public static void main(String[] args) {
Shape[] a = { new Rectangle(3,4), new Circle(2), new Circle(1) };
sortByArea(a);
for(int i=0;i<a.length;i=i+1){
System.out.println(a[i].label() + " area=" + String.format("%.2f", a[i].area()));
}
}
}
Code: Gesamtfläche
Gesamtfläche: In einer einzigen Schleife werden die Aufrufe von area() addiert. Jedes Element führt seine eigene Berechnung durch, sodass der Code einfach bleibt.
public class Main {
static abstract class Shape { abstract double area(); abstract double perimeter(); }
static class Circle extends Shape { double r; Circle(double r){ this.r=Math.max(0,r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }
static double totalArea(Shape[] arr){
double sum = 0.0;
for(int i=0;i<arr.length;i=i+1){
sum = sum + arr[i].area(); // polymorphic call
}
return sum;
}
public static void main(String[] args) {
Shape[] list = { new Circle(1), new Rectangle(2,3), new Circle(0.5) };
System.out.println("Total area = " + String.format("%.2f", totalArea(list)));
}
}
Überprüfung des Polymorphie-Stils
Kurze Überprüfung: Welcher Codestil nutzt hier die Polymorphie am besten?
Zusammenfassung
Zusammenfassung: Wir haben mit derselben API gearbeitet, und jede Form hat ihr eigenes Ergebnis erzeugt. Vorgänge wie Ausgabe, Sortierung und Summenbildung funktionierten mit einheitlichem Code.
Häufig gestellte Fragen
Ist die Lektion „Polymorphe Verhaltensweisen“ kostenlos?
Ja — der vollständige Text von „Polymorphe Verhaltensweisen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Polymorphe Verhaltensweisen“?
Verwenden Sie Polymorphie, um gemischte Formen auszugeben, zu sortieren und zusammenzufassen. Halten Sie Algorithmen für mobile Geräte klein und gut lesbar. Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Polymorphe Verhaltensweisen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Entwurf
- Implementierung
- Polymorphe Verhaltensweisen