Egy osztály példányát úgy hozod létre, hogy a new operátoron keresztül meghívod a konstruktorát.
A konstruktor egy különleges metódus, amelynek az a célja, hogy inicializálja az újonnan létrehozott példányt.
A konstruktorok úgy néznek ki, mint a hagyományos metódusok, de nincs visszatérési típusuk, és a nevük megegyezik az osztály nevével.
class Library {
private int books;
public Library() {
// Initialize the books field
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
A hagyományos metódusokhoz hasonlóan a konstruktoroknak is lehetnek paramétereik. A konstruktor paramétereit általában (privát) mezőkként tároljuk el, hogy később hozzáférjünk hozzájuk, vagy épp valamilyen egyszeri számításban használjuk fel őket. A konstruktoroknak ugyanúgy adhatunk át argumentumokat, mint a hagyományos metódusoknak.
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);
Ebben a feladatban különböző típusú távirányítós autók közötti versenyeket fogsz szervezni. Minden autónak megvannak a saját sebesség- és akkumulátorfogyasztási jellemzői.
Az autók teljesen feltöltött (100%-os) akkumulátorral indulnak. Valahányszor elvezeted az autót a távirányítóval, annyi métert tesz meg, amennyi az autó sebessége, és a hátralévő akkumulátorszázalékot az akkumulátorfogyasztásával csökkenti.
Ha egy autó akkumulátora az akkumulátorfogyasztása százaléka alá csökken, többé nem tudod vezetni az autót.
Minden versenypályának megvan a maga hossza. Az autókat úgy tesztelik, hogy képesek-e úgy teljesíteni a pályát, hogy közben nem merül le az akkumulátoruk.
Hat részfeladat vár rád, amelyek mindegyike távirányítós autók példányaival dolgozik.
Tedd lehetővé egy távirányítós autó létrehozását úgy, hogy definiálsz egy konstruktort a NeedForSpeed osztályhoz, amely két paraméterként átveszi az autó méterben mért sebességét és az akkumulátorfogyasztás százalékát (mindkettő int típusú):
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
Tedd lehetővé egy versenypálya létrehozását úgy, hogy definiálsz egy konstruktort a RaceTrack osztályhoz, amely egyetlen paraméterként átveszi a pálya méterben mért hosszát (int típusú):
int distance = 800;
var raceTrack = new RaceTrack(distance);
Valósítsd meg a NeedForSpeed.drive() metódust, amely az autó sebessége alapján frissíti a megtett méterek számát. Valósítsd meg a NeedForSpeed.distanceDriven() metódust is, amely visszaadja az autó által megtett méterek számát:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.distanceDriven();
// => 5
Frissítsd a NeedForSpeed.drive() metódust, hogy az autó akkumulátorfogyasztása alapján merítse az akkumulátort. Valósítsd meg a NeedForSpeed.batteryDrained() metódust is, amely jelzi, hogy az akkumulátor már túlságosan lemerült-e a vezetéshez:
int speed = 5;
int batteryDrain = 2;
var car = new NeedForSpeed(speed, batteryDrain);
car.drive();
car.batteryDrained();
// => false
A legkelendőbb távirányítós autó a Nitro, amelynek lenyűgöző, 50 méteres végsebessége van 4%-os akkumulátorfogyasztás mellett. Valósítsd meg a (statikus) NeedForSpeed.nitro() metódust, amely ezt a típusú autót adja vissza:
var car = NeedForSpeed.nitro();
car.drive();
car.distanceDriven();
// => 50
Ahhoz, hogy egy autó célba érjen egy versenyen, képesnek kell lennie megtenni a verseny távját. Ez azt jelenti, hogy nem merül le az akkumulátora, mielőtt átlépi a célvonalat. Valósítsd meg a RaceTrack.canFinishRace() metódust, amely paraméterként egy NeedForSpeed példányt vesz át, és true-t ad vissza, ha az autó célba tud érni a versenyen; ellenkező esetben false-t ad vissza:
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
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.