[JAVA] Wählen Sie eine Klassenhierarchie aus markierten Klassen

Tagged Klasse


public class Figure {

	enum Shape {RECTANGLE, CIRCLE};

	final Shape shape;

	//Diese Felder werden nur verwendet, wenn die Form RECHTECKIG ist
	double length;
	double width;

	//Dieses Feld wird nur verwendet, wenn die Form KREIS ist
	double radius;

	//Kreiskonstruktor
	Figure(double radius) {
		shape = Shape.CIRCLE;
		this.radius = radius;
	}

	//Rechteckiger Konstruktor
	Figure(double length, double width) {
		shape = Shape.RECTANGLE;
		this.length = length;
		this.width = width;
	}

	double area() {
		switch (shape) {
		case RECTANGLE:
			return length * width;
		case CIRCLE:
			return Math.PI * (radius * radius);
		default:
			throw new AssertionError(shape);
		}
	}

}

Umschreiben nach Klassenhierarchie für markierte Klassen


abstract class Figure {
	abstract double area();
}

class Circle extends Figure {
	final double radius;

	Circle(double radius) {
		this.radius = radius;
	}

	@Override
	double area() {
		return Math.PI * (radius * radius);
	}
}

class Rectangle extends Figure {
	final double length;
	final double width;

	Rectangle(double length, double width) {
		this.length = length;
		this.width = width;
	}

	@Override
	double area() {
		return length * width;
	}
}

Recommended Posts

Wählen Sie eine Klassenhierarchie aus markierten Klassen
GetInstance () aus einer @ Singleton-Klasse in Groovy aus Java
Verwandeln Sie sich von einer normalen Klasse in einen Lambda-Stil
Extrahieren Sie die Elemente der Reihe nach aus dem Klassentyp ArrayList
Laden von Klassen aus dem Pfad
Generieren Sie JSON aus der JVM-Klassendatei, um die hierarchische Struktur anzuzeigen