Co to jest przeciążanie konstruktorów w Javie
Opublikowany: 2022-11-16Zapotrzebowanie na aplikacje internetowe rośnie na całym świecie. Java stała się preferowanym wyborem dla programistów potrzebujących programowania na dużą skalę. Popularność Javy opiera się na jej dynamicznych funkcjach, przyjaznym dla użytkownika interfejsie i wysokiej kompatybilności z wiodącymi systemami operacyjnymi. Język ma bogate API. Kolejną zaletą języka Java jest solidne wsparcie społeczności i doskonałe usługi dokumentacyjne. Nie zapomnij o pakiecie narzędzi programistycznych oferowanych przez Javę.
Co masz na myśli przez konstruktorów w Javie?
Konstruktory w Javie są używane głównie do inicjalizacji stanu obiektu. Podobnie jak metody, konstruktory składają się z grupy instrukcji lub instrukcji, które muszą zostać wykonane podczas tworzenia obiektu.
Jaka jest potrzeba konstruktora w Javie?
Aby wyjaśnić potrzebę stosowania constrictora w Javie, weźmy przykład pudełka. Rozważ pudełko jako klasę. Pudełko będzie miało różne zmienne, takie jak długość, szerokość i wysokość. Kiedy nadejdzie czas na utworzenie obiektu, klasa pudełka nie będzie miała żadnych zdefiniowanych wartości dla swoich wymiarów. Tworząc nowe obiekty, konstruktorzy przypisują wartości zmiennym klasy na dwa sposoby – poprzez różne parametry przekazywane przez programistę lub przy użyciu domyślnych konstruktorów Javy.
Co masz na myśli przez przeciążanie konstruktora w Javie?
W przypadku przeciążania konstruktorów definiowanych jest wiele konstruktorów tej samej klasy. Jednak każdy konstruktor powinien mieć unikalną sygnaturę lub określone parametry wejściowe. Program przeciążający konstruktory w Javie umożliwia jednej klasie posiadanie więcej niż jednego konstruktora, który różni się listą przekazywanych argumentów. Każdy przeciążony konstruktor służy do wykonywania różnych zadań klasowych.
Kompilator Java identyfikuje przeciążone konstruktory na podstawie typów parametrów, list parametrów i ilości parametrów wejściowych. Jest całkiem oczywiste, że przeciążone konstruktory mają różne sygnatury. Podpis konstruktora będzie zawierał jego typy parametrów i jego nazwę. Czasami pojawiają się problemy z niejednoznacznością, gdy dwa konstruktory klas mają identyczną sygnaturę. W takiej sytuacji kompilator nie może ich rozróżnić. Dlatego wyświetla powiadomienie o błędzie. Czasami istnieją przeciążone konstruktory z różnymi sygnaturami. W tym przypadku kompilator stwierdza, że przewodnik jest wywoływany w zależności od liczby parametrów wejściowych różnych obiektów.
Przykład przeciążenia konstruktora
W tym przykładzie chcemy utworzyć dwa obiekty klasy StudentData . Jeden obiekt używa konstruktora domyślnego, a drugi konstruktora parametrycznego. Oba konstruktory mają oddzielne kody inicjalizacyjne. Możliwe jest tworzenie konstruktorów dowolnych liczb z różnymi-2 kodami inicjującymi do różnych-2 celów.
StudentData.java
klasa StudentData
{
prywatny int stuID;
private String stuName;
prywatne studio int ;
Dane ucznia ()
{
//Domyślny konstruktor
stuID = 100 ;
stuName = „Nowy uczeń” ;
stuWiek = 18 ;
}
StudentData ( int num1, String str, int num2)
{
//Konstruktor sparametryzowany
stuID = liczba1;
stuNazwa = str;
stuWiek = liczba2;
}
//Metody pobierające i ustawiające
public int getStuID() {
zwrot stuID;
}
public void setStuID( int stuID) {
ten .stuID = stuID;
}
public String getStuName() {
zwróć stuNazwa;
}
public void setStuName( String stuName) {
this .stuNazwa = stuNazwa;
}
public int getStuAge() {
powrót stuAge;
}
public void setStuAge( int stuAge) {
this .stuAge = stuAge;
}
public static void main( String argumenty [])
{
//Tworzenie tego obiektu wywołałoby domyślny konstruktor
StudentData myobj = new StudentData ();
systemu . out .println( „Nazwisko ucznia to: „ +myobj.getStuName());
systemu . out .println( „Wiek ucznia to: „ +myobj.getStuAge());
systemu . out .println( „Identyfikator ucznia to: „ +myobj.getStuID());
/*Tworzenie tego obiektu wywołałoby parametrized
* konstruktor StudentData(int, String, int)*/
StudentData myobj2 = new StudentData ( 555 , „Caitanya” , 25 );
systemu . out .println( „Nazwisko ucznia to: „ +myobj2.getStuName());
systemu . out .println( „Wiek ucznia to: „ +myobj2.getStuAge());
systemu . out .println( "Identyfikator ucznia to: " +myobj2.getStuID());
}
}
Wyjście:
Imię ucznia to : Nowy student
Wiek ucznia to : 18 lat
Legitymacja studencka to : 100
Imię ucznia to : Caitanya
Wiek studenta to : 25 lat
Legitymacja studencka to : 555
Odniesienie: https://beginnersbook.com/2013/05/constructor-overloading/
Ucz się kursów programistycznych online z najlepszych światowych uniwersytetów. Zdobądź programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Zrozumienie funkcji this () w przypadku przeciążania konstruktora
klasa publiczna PrzeciążeniePrzykład2
{
prywatny int rollLiczba;
PrzeciążeniePrzykład2 ()
{
liczba rzutów = 100 ;
}
Przykład przeciążenia2 ( int rnum)
{
to ();
/*this() służy do wywołania wartości domyślnej
* konstruktor z konstruktora parametrycznego.
* Zawsze powinno to być pierwsze stwierdzenie
* wewnątrz ciała konstruktora.
*/
rollNum = rollNum+ liczbar;
}
public int getRollNum() {
zwróć rolkęNum;
}
public void setRollNum( int rollNum) {
to .rollNum = rollNum;
}
public static void main( String argumenty [])
{
OverloadingExample2 obj = new OverloadingExample2 ( 12 );
systemu . out .println(obj.getRollNum());
}
}
Wyjście
112
Odniesienie: https://beginnersbook.com/2013/05/constructor-overloading/
Ekskluzywne seminarium internetowe upGrad na temat tworzenia oprogramowania dla Ciebie —
Ekskluzywne seminarium internetowe upGrad na temat tworzenia oprogramowania dla Ciebie —
Biznes SAAS – co jest takiego innego?
We wspomnianym programie konstruktor sparametryzowany jest wywoływany podczas tworzenia obiektu. Konstruktor domyślny jest wywoływany, gdy this () jest umieszczany w konstruktorze sparametryzowanym. Inicjowana jest zmienna rollNum .
Inny przykład:
Jeśli nie zaimplementujesz żadnego konstruktora, kompilator Java wstawi domyślny konstruktor do kodu podczas kompilacji. Jednak kompilator nie robi tego, gdy implementujesz dowolny konstruktor. Zobacz przykład tutaj, aby lepiej zrozumieć ten punkt:
demonstracja klasy publicznej
{
prywatny int rollLiczba;
//Nie definiujemy tutaj konstruktora bezargumentowego
Demo ( int rnum)
{
rollNum = rollNum+ liczbar;
}
//Metody pobierające i ustawiające
public static void main( String argumenty [])
{
//Ta instrukcja wywołałaby konstruktor bez argumentów
Obiekt demonstracyjny = nowy Demo ();
}
}
Wyjście:
Wyjątek w wątku „main” java.lang. Błąd : nierozwiązana kompilacja
Problem: Konstruktor Demo ( ) jest niezdefiniowany
Popularne kursy i artykuły na temat inżynierii oprogramowania
Popularne programy | |||
Program wykonawczy PG w rozwoju oprogramowania - IIIT B | Program certyfikatów Blockchain - PURDUE | Program Certyfikatów Cyberbezpieczeństwa - PURDUE | Magister informatyki - IIIT B |
Inne popularne artykuły | |||
Wynagrodzenie inżyniera chmury w USA 2021-22 | Wynagrodzenie architekta rozwiązań AWS w USA | Wynagrodzenie programisty backendu w USA | Wynagrodzenie programisty front-end w USA |
Wynagrodzenie programisty internetowego w USA | Pytania do wywiadu ze Scrum Masterem w 2022 roku | Jak rozpocząć karierę w cyberbezpieczeństwie w 2022 roku? | Opcje kariery w USA dla studentów inżynierii |
Wyjaśnienie zastosowania przeciążania konstruktora
Dzięki przeciążaniu konstrukcji możliwe staje się umożliwienie obiektowi tworzenia określonej klasy na różne sposoby. Dlatego ta koncepcja jest używana w różnych programach Java w zależności od wymagań programisty. Używając przeciążania konstruktorów w Javie , możliwe jest inicjowanie obiektów różnymi typami danych.
Załóżmy na przykład, że istnieje obiekt z trzema zmiennymi instancji klasy. Należy przypisać określoną wartość do zmiennej drugiej instancji, a wartości domyślne do innych zmiennych. Osiągnij to, deklarując wiele konstruktorów według różnych podpisów w klasie składowej.
Zalety przeciążania konstruktorów w Javie
Poniżej wymieniono kluczowe zalety stosowania przeciążania konstruktorów podczas pisania programów w Javie:
- Instancje klas można inicjować na różne sposoby, używając przeciążania konstruktora.
- Dzięki przeciążaniu konstruktora można osiągnąć statyczny polimorfizm.
- Każdy przeciążony konstruktor wykonuje inne zadania w określonych celach.
- Przeciążanie konstruktorów w Javie usprawnia proces definiowania wielu konstruktorów w jednej klasie z unikalnie określonymi sygnaturami.
Wniosek
W tym artykule omówiono program przeciążający konstruktory w Javie i jego zalety. Istnieje więcej niż jeden konstruktor klasy z różnymi sygnaturami, gdy istnieją przeciążone konstruktory. Do kompilacji każdy konstruktor musi mieć różne listy parametrów. Lista parametrów będzie zawierała typy i kolejność argumentów. Niemożliwe jest posiadanie dwóch konstruktorów z tymi samymi listami parametrów w klasie.
Program certyfikatów Full Stack Development upGrad dla programistów i specjalistów technicznych
Niezależnie od tego, czy jesteś nowicjuszem w branży tworzenia oprogramowania, czy chcesz podnieść swoje umiejętności, musisz nauczyć się nowych umiejętności i technologii poprzez odpowiednie kursy. Jednym z takich kursów jest full-stack development.
upGrad oferuje program wykonawczy w zakresie rozwoju oprogramowania dla zainteresowanych kandydatów, przeznaczony wyłącznie dla specjalistów IT, programistów, specjalistów wsparcia technicznego, analityków i niedawnych absolwentów, którzy chcą zapuścić się na arenę tworzenia oprogramowania.
Dzięki temu kursowi zdobędziesz wysokie umiejętności w zakresie JavaScript i nauczysz się mikroserwisów i stosu MERN. Oprócz uczenia się ponad 10 języków programowania i narzędzi, poznasz także różne narzędzia szeroko stosowane na Facebooku, Walmart, Netflix i LinkedIn. Program zapewnia wciągającą naukę w Cloud Labs.
Studenci przystępujący do tego programu certyfikatów będą mieli możliwość projektowania, opracowywania, testowania i wdrażania aplikacji internetowych w ramach projektu Capstone. Uczący się otrzymują indywidualne sesje mentoringu zawodowego z wiodącymi mentorami branżowymi z tymi korzyściami. Po ukończeniu kursu możesz pracować jako fullstack developer, UI developer, front-end oraz back-end developer.
Aplikuj już teraz , aby zapisać się na kurs!
Jaki jest pożytek z konstruktora w Javie?
Konstruktor w Javie służy do inicjowania obiektów i tworzenia obiektu klasy. Można również ustawić wartości początkowe dla cech i atrybutów obiektów. Konstruktor jest jak blok kodów, podobny do metody lub procesu.
Czy przeciążanie konstruktora ma miejsce dla klasy statycznej?
Co ciekawe, przewodników statycznych nie można przeciążać ani dziedziczyć. Przewodnik statyczny jest wywoływany automatycznie. Użytkownik nie ma kontroli, kiedy w programie jest wykonywany konstruktor statyczny.
Czy istnieje różnica między przeciążeniem konstruktora a przeciążeniem metody?
Metoda służy do wykonywania pewnych funkcji klasowych, podczas gdy konstruktor inicjalizuje obiekt. Podczas tworzenia obiektu konstruktory są wywoływane niejawnie. Jednak metody muszą być jawnie wywoływane przez użytkownika.