Mi a konstruktor a Java -ban és hogyan kell használni?

Mi a konstruktor a Java -ban és hogyan kell használni?

Az objektum-orientált programozás során a konstruktor egy speciális funkció, amelyet egy objektum létrehozásához hív meg. A konstruktorok számos egyedi funkcióval rendelkeznek, amelyek lehetővé teszik a működést.





Java nyelven konstruktőrt nevez el az osztálya alapján. A konstruktor egy módszer, amely abban az osztályban van definiálva, amelyre vonatkozik. A Java konstruktorok túlterhelést használhatnak alternatív viselkedés biztosítására. A Java konstruktőrei az öröklést is felhasználhatják a kód újrafelhasználásához.





Miért van szükség konstruktorokra?

A konstruktorok az objektum-orientált programozás alappillérei, és a Java sem kivétel. Ez a példa bemutatja, hogyan definiálhat egy alapvető körosztályt egy adattulajdonsággal és egy módszerrel:





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

Ezután létrehozhat egy példányt ebből az osztályból, és kölcsönhatásba léphet vele:

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

De ez kevésbé kényelmes és robusztus, mint lehetne. Jó objektum-orientált gyakorlat az adatok beágyazása, védve az illetéktelen hozzáféréstől:



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

Most a hívó kód használhatja a setRadius módszerrel, és nem kell aggódnia a megvalósítás részletei miatt:

hogyan kényszerítsük bezárni az ablakokat
Circle c = new Circle();
c.setRadius(2);

A konstruktorok még jobb módot kínálnak arra, hogy adatokat hozzon létre egy objektumnak létrehozásakor. Nagyon gyakran használják olyan tulajdonságok inicializálására, mint a sugár itt.





Példák egyszerű konstruktorokra

A legalapvetőbb konstruktor az, akinek nincsenek érvei, és nem tesz semmit:

public class Circle {
public Circle() {}
}

Lásd még: Ismerje meg, hogyan hozhat létre osztályokat Java -ban





Ha nem definiál konstruktőrt, a Java alapértelmezettet biztosít, amely ugyanúgy viselkedik.

Vegye figyelembe néhány dolgot:

  1. A konstruktor neve megegyezik az osztály nevével.
  2. Ez a konstruktor a nyilvános hozzáférési módosítót, így bármely más kód hívhatja.
  3. A konstruktor nem tartalmaz visszatérési típust. Más módszerekkel ellentétben a konstruktorok nem adhatnak vissza értéket.

A konstruktorok általában valamilyen inicializálást végeznek. Vegye figyelembe, hogy a fenti kód nem inicializálja a sugár értékét. Ebben az esetben a nyelv automatikusan nullára állítja. Ez az osztály elvárja a felhasználótól, hogy használja setRadius () . Ha 0 -nál hasznosabb alapértelmezettet szeretne használni, hozzárendelheti azt a konstruktoron belül:

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

Az ezzel az osztállyal létrehozott körök legalább most tényleges területtel rendelkeznek! A hívó továbbra is használhatja setRadius () hogy az 1 -től eltérő sugarat biztosítson. De a konstruktor még barátságosabb is lehet:

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

Mostantól születésükkor meghatározott sugarú köröket hozhat létre:

szövegdoboz hozzáadása a Google Dokumentumokhoz
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Ez nagyon gyakori felhasználás a konstruktőröknél. Gyakran használja őket a változók paraméterértékekre inicializálására.

Konstruktor túlterhelés

Egy osztálykonfigurációban több konstruktort is megadhat:

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

Ez lehetőséget ad a hívó kódnak az objektumok létrehozására:

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

Egy kicsit bonyolultabb körrel felfedezhet érdekesebb konstruktorokat. Ez a verzió megőrzi pozícióját:

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; }
}

Most létrehozhat egy kört érvek nélkül, egyetlen sugárral vagy x és y koordinátákkal a sugár mellett. Ez ugyanaz a túlterhelés, amelyet a Java bármilyen módszerhez támogat.

Konstruktorlánc

Mi lenne, ha létrehoznál egy kört egy másik alapján? Ez lehetővé teszi számunkra, hogy könnyen másolhassuk a Köröket. Vegye figyelembe a következő blokkot:

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

Ez működni fog, de szükségtelenül megismétel néhány kódot. Mivel a Circle osztálynak már van egy konstruktőre, amely kezeli az egyes tulajdonságokat, ezt hívhatja a ez kulcsszó:

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

Ez a konstruktor láncolásának egyik formája, az egyik konstruktor meghívása a másiktól. Kevesebb kódot használ, és segít a művelet központosításában, nem pedig a többszörözésben.

A szülőkonstruktor hívása

A konstruktorlánc másik formája akkor fordul elő, amikor egy konstruktor meghívja a szülőosztály konstruktorát. Ez lehet explicit vagy implicit. A szülőkonstruktor kifejezett hívásához használja a szuper kulcsszó:

super(x, y);

Képzelje el, hogy egy Alakosztály a Kör szülőjeként működik:

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

Az összes alakzat közös pozicionálását kezeli, mivel ez a funkció közös mindannyian. Most a Kör osztály átruházhatja a pozíciókezelést a szülőjére:

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;
}
}

A szuperklasszikus építés nagyon fontos szempont öröklődés a Java -ban . A nyelv alapértelmezés szerint érvényesíti, ha nem hívja kifejezetten szuper a konstruktőreiben.

Hozzáférés módosítók a konstruktorokon

A konstruktorok hozzáférésmódosítót tartalmazhatnak az aláírásukban. Más módszerekhez hasonlóan ez határozza meg, hogy milyen típusú hívók férhetnek hozzá a konstruktorhoz:

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

Ez egy bonyolultabb példa, ezért ügyeljen arra, hogy megértse:

  • Az osztály nem absztrakt, így lehetséges belőle példányosítani.
  • A konstruktor privát, így csak ez az osztály hozhat létre új példányt.
  • Egy statikus tulajdonságon és metóduson keresztül az osztály egyetlen egyedi példányt tesz ki a hívóknak.

Objektumok létrehozásához használja a Java konstruktőreit

A konstruktorok létfontosságúak az objektum-orientált programozáshoz. Lehetővé teszik objektumok létrehozását, ami elengedhetetlen!

A Java -ban a konstruktorok más módszerekhez hasonlítanak, és nagyjából ugyanúgy működnek. Emlékeznie kell az alapértelmezett konstruktorokra, a túlterhelésre és a konstruktorláncokra vonatkozó speciális szabályokra. Ha a konstruktorok még nem ismerik Önt, érdemes elolvasni a Java alapfogalmait, amelyeket az induláskor meg kell tanulnia.

Részvény Részvény Csipog Email 10 alapvető Java fogalom, amelyeket meg kell tanulnia az induláskor

Akár GUI-t ír, szerveroldali szoftvert fejleszt, vagy Android-ot használó mobilalkalmazást használ, a Java tanulása jól fog szolgálni. Íme néhány alapvető Java koncepció, amelyek segítenek az indulásban.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Jáva
  • Kódolási tippek
A szerzőről Bobby Jack(58 cikk megjelent)

Bobby technológiai rajongó, aki két évtized nagy részében szoftverfejlesztőként dolgozott. Szenvedélyesen szereti a játékot, a Switch Player Magazin Vélemények szerkesztőjeként dolgozik, és elmerül az online közzététel és webfejlesztés minden területén.

mit frissítsek a számítógépes teszten
Továbbiak Bobby Jack -től

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide