Eine Instanz einer Klasse erstellst du, indem du ihren Konstruktor mit dem new-Operator aufrufst.
Ein Konstruktor ist eine besondere Art von Methode, deren Ziel es ist, eine neu erstellte Instanz zu initialisieren.
Konstruktoren sehen aus wie normale Methoden, haben aber keinen Rückgabetyp und einen Namen, der mit dem Namen der Klasse übereinstimmt.
class Library {
private int books;
public Library() {
// Initialize the books field
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
Wie normale Methoden können Konstruktoren Parameter haben. Die Parameter eines Konstruktors werden üblicherweise in (privaten) Feldern gespeichert, um später darauf zugreifen zu können, oder sie werden für eine einmalige Berechnung verwendet. Argumente können an Konstruktoren übergeben werden, genau wie Argumente an normale Methoden übergeben werden.
class Building {
private int numberOfStories;
private int totalHeight;
public Building(int numberOfStories, double storyHeight) {
this.numberOfStories = numberOfStories;
this.totalHeight = numberOfStories * storyHeight;
}
}
// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2);
In dieser Übung organisierst du Rennen zwischen verschiedenen Arten von ferngesteuerten Autos. Jedes Auto hat seine eigene Geschwindigkeit und sein eigenes Entladeverhalten der Batterie.
Autos starten mit vollen Batterien (100 %). Jedes Mal, wenn du das Auto mit der Fernbedienung fährst, legt es die Geschwindigkeit des Autos in Metern zurück und verringert den verbleibenden Batteriestand um seine Batterieentladung.
Wenn der Batteriestand eines Autos unter seiner Batterieentladung liegt, kannst du das Auto nicht mehr fahren.
Jede Rennstrecke hat ihre eigene Distanz. Autos werden getestet, indem geprüft wird, ob sie die Strecke beenden können, ohne dass die Batterie leer wird.
Du hast sechs Aufgaben, die jeweils mit Instanzen von ferngesteuerten Autos arbeiten.
Ermögliche das Erstellen eines ferngesteuerten Autos, indem du einen Konstruktor für die Klasse NeedForSpeed definierst, der die Geschwindigkeit des Autos in Metern und die Batterieentladung in Prozent als seine beiden Parameter entgegennimmt (beide vom Typ int):
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
Ermögliche das Erstellen einer Rennstrecke, indem du einen Konstruktor für die Klasse RaceTrack definierst, der die Distanz der Strecke in Metern als seinen einzigen Parameter entgegennimmt (vom Typ int):
int distance = 800;
var raceTrack = new RaceTrack(distance);
Implementiere die Methode NeedForSpeed.drive(), die die Anzahl der gefahrenen Meter basierend auf der Geschwindigkeit des Autos aktualisiert. Implementiere außerdem die Methode NeedForSpeed.distanceDriven(), die die Anzahl der vom Auto gefahrenen Meter zurückgibt:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.distanceDriven();
// => 5
Aktualisiere die Methode NeedForSpeed.drive(), sodass sie die Batterie basierend auf der Batterieentladung des Autos entlädt. Implementiere außerdem die Methode NeedForSpeed.batteryDrained(), die angibt, ob die Batterie zu stark entladen ist, um noch zu fahren:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.batteryDrained();
// => false
Das meistverkaufte ferngesteuerte Auto ist das Nitro. Es hat eine beeindruckende Spitzengeschwindigkeit von 50 Metern bei einer Batterieentladung von 4 %. Implementiere die (statische) Methode NeedForSpeed.nitro(), die diesen Autotyp zurückgibt:
var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50
Um ein Rennen zu beenden, muss ein Auto die Distanz des Rennens fahren können. Das bedeutet, dass seine Batterie nicht leer sein darf, bevor es die Ziellinie überquert hat. Implementiere die Methode RaceTrack.canFinishRace(), die eine Instanz von NeedForSpeed als Parameter entgegennimmt und true zurückgibt, wenn das Auto das Rennen beenden kann; andernfalls gibt sie false zurück:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
int distance1 = 100;
var race1 = new RaceTrack(distance1);
int distance2 = 300;
var race2 = new RaceTrack(distance2);
race1.canFinishRace(car);
// => true
race2.canFinishRace(car);
// => false
Melde dich bei Exercism an, um Java mit 26 Konzepte158 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.