Konstruktori ülekoormus Java
⚡ Nutikas kokkuvõte
Konstruktori ülekoormus Java võimaldab klassil deklareerida mitu konstruktorit, mis erinevad parameetrite loendi poolest, pakkudes arendajatele paindlikku objektide initsialiseerimist, puhtamat koodi taaskasutamist this() kaudu ja ennustatavat käitumist alati, kui eksemplari loomisel on vaja vaike- või kohandatud väärtusi.

Mis on konstruktori ülekoormamine? Java?
Konstruktori ülekoormus Java on tehnika, mille puhul klass deklareerib mitu konstruktorit, mis erinevad üksteisest parameetrite loendi poolest. Kompilaator eristab neid konstruktoreid parameetrite arvu ja andmetüüpide analüüsimise teel.
Klassi kehtivate konstruktorite näited konto on näidatud allpool:
Account(int a); Account (int a,int b); Account (String a,int b);
Miks me vajame konstruktori ülekoormamist? Java?
Konstruktori ülekoormus Java parandab paindlikkust ja koodi efektiivsust, lubades klassis mitut konstruktorit, millel kõigil on erinev parameetrite loend.
- Paindlikkus objektide loomisel: Konstruktori ülelaadimine võimaldab objekte initsialiseerida mitmel viisil, olenevalt parameetrite arvust või tüübist.
- Code Korduvkasutatavus: Konstruktori loogikat saab taaskasutada, kutsudes ühe konstruktori teisest välja, kasutades see () märksõna.
- Parem loetavus: Ülekoormatud konstruktorid muudavad koodi intuitiivsemaks, pakkudes spetsiifilisi valikuid erinevate initsialiseerimisvajaduste jaoks.
- Vaikimisi ja kohandatud lähtestamine: Konstruktori ülelaadimine võimaldab teil hõlpsalt luua nii vaikimisi kui ka kohandatud lähtestatud objekte.
Näide: Konstruktori ülekoormamine Java
Järgnev näide demonstreerib konstruktori ülekoormamist Java kasutades klassi nimega Demo.
Step 1) Tippige kood redaktorisse.
class Demo{ int value1; int value2; /*Demo(){ value1 = 10; value2 = 20; System.out.println("Inside 1st Constructor"); }*/ Demo(int a){ value1 = a; System.out.println("Inside 2nd Constructor"); } Demo(int a,int b){ value1 = a; value2 = b; System.out.println("Inside 3rd Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ Demo d1 = new Demo(); Demo d2 = new Demo(30); Demo d3 = new Demo(30,40); d1.display(); d2.display(); d3.display(); } }
Step 2) Salvesta, kompileeri ja käivita kood.
Step 3) Ilmub viga. Proovige viga siluda enne konstruktori ülekoormamise järgmise sammu juurde liikumist. Java.
Step 4) Igal klassil on vaikeklass Konstruktor sisse JavaVaikimisi konstruktor klassi demo is Demo()Kui te seda ei esita, loob kompilaator selle teie eest ja lähtestab muutujad vaikeväärtustele.
Kui aga määrate parameetrilise konstruktori, näiteks Demo(int a) ja soovite kasutada vaikeseadet Demo(), on selle selgesõnaline deklareerimine kohustuslik.
Step 5) Eemalda koodi ridadelt 4–8 kommentaarid, seejärel salvesta, kompileeri ja käivita programm uuesti, et jälgida käitumise muutust.
Konstruktori aheldamine Java
Mõelge stsenaariumile, kus põhiklassi laiendab laps. Alati, kui luuakse alamklassi objekt, kutsutakse esmalt esile ülemklassi konstruktor. Seda nimetatakse Konstruktori aheldamine.
Näide: Konstruktori aheldamise mõistmiseks konstruktori ülekoormuse abil Java
Step 1) Kopeerige järgmine kood redaktorisse.
class Demo{ int value1; int value2; Demo(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } Demo(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends Demo{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } }
Step 2) Käivita kood. Konstruktori aheldamise tõttu, kui lapseklassi objekt Demolaps luuakse konstruktor Demo() esmalt kutsutakse välja ülemklassi kood ja seejärel konstruktor Demolaps() laps jookseb järgmisena.
Eeldatav väljund:
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
Step 3) Võite märgata, et vanemkonstruktor Demo() töötab vaikimisi. Ülekoormatud konstruktori kutsumiseks Demo(int a) selle asemel kasutage märksõna "Super".
süntaksit:
super(); --or-- super(parameter list);
Näide: Kui teie vanemkonstruktor on selline Demo(String Nimi, int a), täpsustate super ("Java”,5). Kui kasutatakse, siis märksõna super peab olema lapseklassi konstruktori esimene koodirida.
Step 4) Eemalda kommentaar realt 26 ja käivita kood. Jälgi väljundit.
Väljund:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4
