Mis on Java konstruktor ja kuidas seda kasutada?

Mis on Java konstruktor ja kuidas seda kasutada?

Objektorienteeritud programmeerimisel on konstruktor erifunktsioon, mille kutsute objekti loomiseks. Konstruktoritel on mitmeid unikaalseid funktsioone, mis võimaldavad neil töötada.





Java -s nimetate konstruktori oma klassi järgi. Konstruktor on meetod, mis on määratletud klassis, millele see kehtib. Java -konstruktorid võivad alternatiivse käitumise pakkumiseks kasutada ülekoormust. Java konstruktorid saavad koodi taaskasutamiseks kasutada ka pärandit.





Miks te ikkagi konstruktoreid vajate?

Konstruktorid on objektorienteeritud programmeerimise alustala ja Java pole erand. See näide näitab, kuidas saate määratleda Circle'i põhiklassi ühe andmeatribuudi ja ühe meetodiga.





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

Seejärel saate luua selle klassi eksemplari ja sellega suhelda.

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

Kuid see on vähem mugav ja vastupidav kui võiks. Hea objektorienteeritud tava on andmete kapseldamine, kaitstes neid volitamata juurdepääsu eest:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

Nüüd saab helistamiskood kasutada setRadius meetodit ja ärge muretsege selle rakendamise üksikasjade pärast:

Kas ma saan kasutada kahe monitori jaoks hdmi -jaoturit?
Circle c = new Circle();
c.setRadius(2);

Konstruktorid pakuvad veelgi paremat viisi andmete edastamiseks objektile selle loomisel. Neid kasutatakse väga sageli omaduste, näiteks raadius siin.





Lihtsate konstruktorite näited

Kõige elementaarsem konstruktor on see, millel pole argumente ja mis ei tee midagi:

public class Circle {
public Circle() {}
}

Vaata ka: Siit saate teada, kuidas Java -s klasse luua





Kui te ei määratle konstruktorit, pakub Java vaikekonstruktsiooni, mis käitub samamoodi.

Pange tähele paari asja:

  1. Konstruktori nimi kattub klassi nimega.
  2. See konstruktor kasutab avalik juurdepääsu modifikaatorit, nii et seda võib kutsuda mis tahes muu kood.
  3. Konstruktor ei sisalda tagastustüüpi. Erinevalt teistest meetoditest ei saa konstruktorid väärtust tagastada.

Konstruktorid teostavad tavaliselt teatud tüüpi lähtestamist. Pange tähele, et ülaltoodud kood ei initsieeri raadiuse väärtust. Sel juhul määrab keel selle automaatselt nulli. See klass eeldab, et kasutaja kasutab setRadius () . Kui soovite kasutada kasulikumat vaikeseadet kui 0, saate selle konstruktoris määrata:

public class Circle {
public Circle() { radius = 1; }
}

Selle klassiga loodud suhtlusringidel on vähemalt nüüd tegelik ala! Helistaja saab endiselt kasutada setRadius () anda muu raadius kui 1. Kuid konstruktor võib olla veelgi sõbralikum:

public class Circle {
public Circle(double r) { radius = r; }
}

Nüüd saate luua konkreetse raadiusega ringe alates sünnist.

on kõrgem värskendussagedus parem
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

See on konstruktorite jaoks väga levinud kasutus. Sageli kasutate neid muutujate parameetrite väärtuste vormindamiseks.

Konstruktori ülekoormus

Klassi definitsioonis saate määrata mitu konstruktorit.

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

See annab helistamiskoodile objekti koostamise valiku:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

Veidi keerukama ringi abil saate uurida huvitavamaid konstruktoreid. See versioon salvestab oma positsiooni:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

Nüüd saate luua ringi ilma argumentideta, ühe raadiuse või x ja y koordinaatidega raadiuse kõrval. See on samalaadne ülekoormus, mida Java toetab mis tahes meetodi puhul.

Konstruktori kettimine

Kuidas oleks ühe ringi loomine teise põhjal? See annaks meile võimaluse suhtlusringe hõlpsalt kopeerida. Jälgige järgmist plokki:

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

See töötab, kuid kordab mõnda koodi asjatult. Kuna Circle klassil on juba üksikute omadustega tegelev konstruktor, võite selle asemel helistada, kasutades seda märksõna:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

See on üks konstruktori aheldamise vorm, kutsudes üht konstruktorit teiselt. See kasutab vähem koodi ja aitab toimingut tsentraliseerida, mitte seda dubleerida.

Vanemkonstruktori kutsumine

Konstruktori aheldamise teine ​​vorm tekib siis, kui konstruktor kutsub oma vanemklassi konstruktori. See võib olla kas selgesõnaline või kaudne. Vanemkonstruktori selgesõnaliseks helistamiseks kasutage Super märksõna:

super(x, y);

Kujutage ette, et Shape klass toimib ringi vanemana:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

See tegeleb kõigi kujundite ühise positsioneerimisega, kuna see on funktsionaalsus, mida nad kõik jagavad. Nüüd saab Circle klass positsiooni käsitlemise oma vanemale delegeerida:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

Superklassi ehitus on väga oluline aspekt pärand Java . Keel rakendab seda vaikimisi, kui te otseselt ei helista Super oma konstruktorites.

Konstruktorite juurdepääs modifikaatoritele

Konstruktorid võivad oma allkirja lisada juurdepääsu muutja. Sarnaselt teiste meetoditega määratleb see, millist tüüpi helistajad pääsevad konstruktorile juurde:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

See on keerulisem näide, seega olge ettevaatlik, et seda mõista:

  • Klass ei ole abstraktne, seega on võimalik sellest koheselt lähtuda.
  • Konstruktor on privaatne, nii et ainult see klass ise saab uue eksemplari luua.
  • Staatilise omaduse ja meetodi kaudu paljastab klass helistajatele ainulaadse eksemplari.

Objektide loomiseks kasutage Java konstruktoreid

Konstruktorid on objektorienteeritud programmeerimisel üliolulised. Need võimaldavad teil luua objekte, mis on hädavajalik!

Java -s näevad konstruktorid välja nagu teised meetodid ja töötavad umbes samamoodi. Peaksite meeles pidama erieeskirju vaikekonstruktorite, ülekoormamise ja konstruktori aheldamise kohta. Kui konstruktorid on teie jaoks uued, võiksite tutvuda teiste Java põhikontseptsioonidega, mida peaksite alustamisel õppima.

Jaga Jaga Piiksuma E -post 10 Java põhitõdet, mida peaksite alustamisel õppima

Ükskõik, kas kirjutate graafilist kasutajaliidest, arendate serveripoolset tarkvara või Androidi kasutavat mobiilirakendust, aitab Java õppimine teid hästi. Siin on mõned Java põhikontseptsioonid, mis aitavad teil alustada.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Java
  • Näpunäiteid kodeerimiseks
Autori kohta Bobby Jack(58 artiklit avaldatud)

Bobby on tehnoloogiahuviline, kes töötas enam kui kaks aastakümmet tarkvaraarendajana. Ta on kirglik mängude vastu, töötab ajakirja Switch Player ülevaadete toimetajana ning on süvenenud kõikidesse veebipõhiste avaldamise ja veebiarenduse aspektidesse.

tundmatu USB -seadme kirjeldusetaotlus ebaõnnestus
Veel Bobby Jackilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin