
new
, lan kabeh wis siyap :) Ing kene kita bakal ngomong babagan apa sing kedadeyan ing komputer lan mesin Java nalika nulis, contone:
Cat cat = new Cat();
Kita wis ngomong babagan iki sadurunge, nanging mung yen kita bakal ngelingake sampeyan:
- Pisanan, memori kanggo nyimpen obyek diparengake.
- Sabanjure, mesin Java nggawe referensi kanggo obyek kasebut (ing kasus kita referensi yaiku Cat cat).
- Pungkasan, variabel diinisialisasi lan konstruktor diarani (kita bakal nliti proses iki kanthi luwih rinci).

public class Vehicle {
public static int vehicleCounter = 0;
private String description = "Vehicle";
public Vehicle() {
}
public String getDescription() {
return description;
}
}
public class Truck extends Vehicle {
private static int truckCounter = 0;
private int yearOfManufacture;
private String model;
private int maxSpeed;
public Truck(int yearOfManufacture, String model, int maxSpeed) {
this.yearOfManufacture = yearOfManufacture;
this.model = model;
this.maxSpeed = maxSpeed;
Vehicle.vehicleCounter++;
truckCounter++;
}
}
Kelas kasebut Truck
minangka implementasi truk kanthi lapangan sing nuduhake taun, model, lan kecepatan maksimal. Saiki kita pengin nggawe siji obyek kasebut:
public class Main {
public static void main(String[] args) throws IOException {
Truck truck = new Truck(2017, "Scania S 500 4x2", 220);
}
}
Kanggo mesin Java, proses bakal katon kaya iki:
-
Babagan pisanan sing kedadeyan yaiku variabel statis kelas
Vehicle
diinisialisasi . Ya, aku ngomongVehicle
kelas, oraTruck
. Variabel statis diinisialisasi sadurunge konstruktor diarani, lan iki diwiwiti ing kelas induk. Ayo dadi nyoba kanggo verifikasi iki. We nyetelvehicleCounter
lapangan ingVehicle
kelas witjaksono kanggo 10 lan nyoba kanggo nampilake ing loroVehicle
lanTruck
konstruktor.public class Vehicle { public static int vehicleCounter = 10; private String description = "Vehicle"; public Vehicle() { System.out.println(vehicleCounter); } public String getDescription() { return description; } } public class Truck extends Vehicle { private static int truckCount = 0; private int yearOfManufacture; private String model; private int maxSpeed; public Truck(int yearOfManufacture, String model, int maxSpeed) { System.out.println(vehicleCounter); this.yearOfManufacture = yearOfManufacture; this.model = model; this.maxSpeed = maxSpeed; Vehicle.vehicleCounter++; truckCount++; } }
Kita sengaja nyelehake statement println ing wiwitan konstruktor
Truck
kanggo mesthekake yen lapangan truk durung diwiwiti nalikavehicleCounter
ditampilake.Lan iki asile:
10 10
-
Sawise variabel statis kelas induk diinisialisasi, variabel statis kelas anak diinisialisasi. Ing kasus kita, iki minangka
truckCounter
lapangan kelasTruck
.Ayo nindakake eksperimen liyane ing ngendi kita bakal nyoba nampilake nilai
truckCounter
ingTruck
konstruktor sadurunge kolom liyane diwiwiti:public class Truck extends Vehicle { private static int truckCounter = 10; private int yearOfManufacture; private String model; private int maxSpeed; public Truck(int yearOfManufacture, String model, int maxSpeed) { System.out.println(truckCounter); this.yearOfManufacture = yearOfManufacture; this.model = model; this.maxSpeed = maxSpeed; Vehicle.vehicleCounter++; truckCounter++; } }
Nalika sampeyan bisa ndeleng, nilai 10 wis ditugasake kanggo variabel statis nalika
Truck
konstruktor diwiwiti. -
Iku isih durung wektu kanggo konstruktor! Initialization variabel terus. Variabel non-statis saka kelas induk diinisialisasi katelu. Kaya sing sampeyan ngerteni, warisan nggawe rumit proses nggawe obyek, nanging ora ana sing bisa ditindakake: Sampeyan mung kudu ngeling-eling sawetara perkara ing pemrograman :)
Minangka eksperimen, kita bisa nemtokake sawetara nilai awal kanggo
description
variabel ingVehicle
kelas, lan banjur ngganti ing konstruktor.public class Vehicle { public static int vehicleCounter = 10; private String description = "Initial value of the description field"; public Vehicle() { System.out.println(description); description = "Vehicle"; System.out.println(description); } public String getDescription() { return description; } }
Ayo mbukak
main()
metode sing nggawe truk:public class Main { public static void main(String[] args) throws IOException { Truck truck = new Truck(2017, "Scania S 500 4x2", 220); } }
Kita entuk asil ing ngisor iki:
Initial value of the description field Vehicle
Iki mbuktekake yen nalika
Vehicle
konstruktor wiwitdescription
lapangan wis diwenehi nilai. -
Akhire, iku wektu kanggo konstruktor! Luwih tepat, wektu kanggo konstruktor kelas dasar. Iki dijaluk ing langkah kaping papat saka proses nggawe obyek.
Iki uga cukup gampang kanggo verifikasi. Ayo dadi nyoba outputting loro baris kanggo console: siji nang
Vehicle
konstruktor kelas basa, liyane nangTruck
konstruktor. Kita kudu yakin manawa baris ing njeroVehicle
ditampilake dhisik:public Vehicle() { System.out.println("Hello from the Vehicle constructor!"); } public Truck(int yearOfManufacture, String model, int maxSpeed) { System.out.println("Hello from the Truck constructor!"); this.yearOfManufacture = yearOfManufacture; this.model = model; this.maxSpeed = maxSpeed; Vehicle.vehicleCounter++; truckCounter++; }
Kita bakal mbukak
main()
cara kita lan ndeleng asil:Hello from the Vehicle constructor! Hello from the Truck constructor!
Banget. Berarti ora kliru :) ayo maju.
-
Saiki iku wektu kanggo initialization saka kothak non-statis saka kelas anak, IE
Truck
kelas kita. Bidang sing langsung ana ing kelas sing bakal ditindakake ora diwiwiti nganti langkah kaping lima! Ngageti, nanging bener :) Maneh, kita bakal nindakake mriksa prasaja - kaya karo kelas induk: kita bakal sawetara nilai awal kanggo variabelmaxSpeed
lan ingTruck
konstruktor kita bakal mriksa yen nilai kasebut ditugasake sadurunge konstruktor diwiwiti:public class Truck extends Vehicle { private static int truckCounter = 10; private int yearOfManufacture; private String model; private int maxSpeed = 150; public Truck(int yearOfManufacture, String model, int maxSpeed) { System.out.println("Initial value of maxSpeed = " + this.maxSpeed); this.yearOfManufacture = yearOfManufacture; this.model = model; this.maxSpeed = maxSpeed; Vehicle.vehicleCounter++; truckCounter++; } }
Output konsol:
Initial value of maxSpeed = 150
Nalika sampeyan bisa ndeleng, nalika
Truck
konstruktor wiwit,maxSpeed
wis padha karo 150! -
Konstruktor
Truck
kelas anak diarani.Lan mung ing titik iki, pungkasan kabeh, bakal konstruktor saka kelas kita instantiating bakal disebut!
Mung ing langkah enem lapangan bakal diwenehi nilai sing kita pass minangka bantahan kanggo truk kita.
Kaya sing sampeyan ngerteni, "mbangun" truk, yaiku proses nggawe obyek, ora gampang. Nanging kayane wis dipecah dadi bagean sing paling cilik :)

GO TO FULL VERSION