logo

300 pytań do wywiadu na temat Core Java | Zestaw 1

90% pewność pytań na rozmowie kwalifikacyjnej

Istnieje lista 300 podstawowych pytań do rozmowy kwalifikacyjnej w języku Java. Jeśli zadano Ci jakieś podstawowe pytanie podczas rozmowy kwalifikacyjnej w języku Java, uprzejmie opublikuj je w sekcji zadaj pytanie. Zapewniamy, że znajdziesz tutaj 90% najczęściej zadawanych pytań i odpowiedzi na rozmowach kwalifikacyjnych.

Odpowiedzi na pytania podczas rozmowy kwalifikacyjnej Core Java są krótkie i na temat. Podstawowe pytania do rozmowy kwalifikacyjnej w języku Java są podzielone na kategorie: pytania do rozmowy kwalifikacyjnej Podstawy języka Java, pytania do rozmowy kwalifikacyjnej OOP, pytania do rozmowy kwalifikacyjnej dotyczące obsługi ciągów, pytania do rozmowy kwalifikacyjnej dotyczącej wielowątkowości, pytania do rozmowy kwalifikacyjnej dotyczące kolekcji, pytania do rozmowy kwalifikacyjnej JDBC itp.


1 2 3 4 5

Core Java: Podstawy pytań do rozmowy kwalifikacyjnej w języku Java


1) Co to jest Java?

Jawa jest na wysokim poziomie, zorientowany obiektowo , solidny, bezpieczny język programowania, niezależny od platformy, wysokowydajny, wielowątkowy i przenośny język programowania. Został opracowany przez Jamesa Goslinga w czerwcu 1991 r. Można ją również nazwać platformą, ponieważ zapewnia własne środowisko JRE i API.


2) Jakie są różnice między C++ i Javą?

Różnice pomiędzy C++ i Java podano w poniższej tabeli.

Indeks porównawczy C++Jawa
Niezależny od platformy C++ jest zależny od platformy.Java jest niezależna od platformy.
Używany głównie do C++ jest używany głównie do programowania systemowego.Java jest używana głównie do programowania aplikacji. Jest szeroko stosowany w aplikacjach okiennych, internetowych, korporacyjnych i mobilnych.
Cel projektu C++ został zaprojektowany z myślą o programowaniu systemów i aplikacji. Było to przedłużenie Język programowania C .Java została zaprojektowana i stworzona jako interpreter dla systemów drukujących, ale później została rozszerzona jako wspierająca sieć komputerowa. Został zaprojektowany z myślą o łatwości obsługi i dostępności dla szerszego grona odbiorców.
Iść do C++ obsługuje instrukcję goto.Java nie obsługuje instrukcji goto.
Dziedziczenie wielokrotne C++ obsługuje wielokrotne dziedziczenie.Java nie obsługuje wielokrotnego dziedziczenia poprzez klasę. Można to osiągnąć poprzez interfejsy w Javie .
Przeciążenie operatora Obsługuje C++ przeciążenie operatora .Java nie obsługuje przeciążania operatorów.
Wskaźniki C++ obsługuje wskaźniki. Możesz napisać program wskaźnikowy w C++.Java obsługuje wskaźnik wewnętrznie. Jednakże nie można napisać programu wskaźnikowego w Javie. Oznacza to, że Java ma ograniczoną obsługę wskaźników w Javie.
Kompilator i interpreter C++ używa tylko kompilatora. C++ jest kompilowany i uruchamiany przy użyciu kompilatora, który konwertuje kod źródłowy na kod maszynowy, więc C++ jest zależne od platformy.Java używa zarówno kompilatora, jak i interpretera. Kod źródłowy Java jest konwertowany na kod bajtowy w czasie kompilacji. Interpreter wykonuje ten kod bajtowy w czasie wykonywania i generuje dane wyjściowe. Java jest interpretowana, dlatego jest niezależna od platformy.
Zadzwoń według wartości i zadzwoń przez odniesienie C++ obsługuje zarówno wywołanie według wartości, jak i wywołanie przez referencję.Java obsługuje tylko wywoływanie według wartości. W Javie nie ma wywołania przez referencję.
Struktura i Unia C++ obsługuje struktury i związki.Java nie obsługuje struktur i związków.
Wsparcie wątków C++ nie ma wbudowanej obsługi wątków. Opiera się na bibliotekach innych firm do obsługi wątków.Java ma wbudowaną nitka wsparcie.
Komentarz do dokumentacji C++ nie obsługuje komentarzy do dokumentacji.Java obsługuje komentarze do dokumentacji (/** ... */) umożliwiające tworzenie dokumentacji dla kodu źródłowego Java.
Wirtualne słowo kluczowe C++ obsługuje wirtualne słowo kluczowe, dzięki czemu możemy zdecydować, czy zastąpić funkcję.Java nie ma wirtualnego słowa kluczowego. Domyślnie możemy zastąpić wszystkie metody niestatyczne. Innymi słowy, metody niestatyczne są domyślnie wirtualne.
bez znaku przesunięcie w prawo >>> C++ nie obsługuje operatora >>>.Java obsługuje operator przesunięcia w prawo bez znaku >>>, który wypełnia zero u góry dla liczb ujemnych. W przypadku liczb dodatnich działa tak samo jak operator >>.
Drzewo dziedziczenia C++ zawsze tworzy nowe drzewo dziedziczenia.Java zawsze używa pojedynczego drzewa dziedziczenia, ponieważ wszystkie klasy są dziećmi klasy Object w Javie. Klasa obiektu jest korzeniem obiektu dziedzictwo drzewo w Javie.
Sprzęt komputerowy C++ jest bliżej sprzętu.Java nie jest tak interaktywna ze sprzętem.
Zorientowany obiektowo C++ jest językiem obiektowym. Jednak w języku C hierarchia z jednym rdzeniem nie jest możliwa.Java jest również zorientowany obiektowo język. Jednak wszystko (z wyjątkiem typów podstawowych) jest obiektem w Javie. Jest to pojedyncza hierarchia główna, ponieważ wszystko wywodzi się z Java.lang.Object.

3) Wymień cechy języka programowania Java.

W języku programowania Java dostępne są następujące funkcje.

    Prosty:Java jest łatwa do nauczenia. Składnia języka Java oparta jest na języku C++, co ułatwia pisanie w nim programu.
    Zorientowane obiektowo:Java opiera się na paradygmacie zorientowanym obiektowo, który pozwala nam zachować nasz kod jako kombinację różnych typów obiektów, która zawiera zarówno dane, jak i zachowanie.
    Przenośny:Java obsługuje podejście „czytaj raz, zapisz i wszędzie”. Program Java jesteśmy w stanie uruchomić na każdej maszynie. Program Java (.java) jest konwertowany do kodu bajtowego (.class), który można łatwo uruchomić na każdym komputerze.
    Niezależny od platformy:Java jest językiem programowania niezależnym od platformy. Różni się od innych języków programowania, takich jak C i C++, które wymagają platformy do wykonania. Java ma swoją platformę, na której wykonywany jest jej kod. Java nie zależy od systemu operacyjnego, który ma być wykonywany.
    Zabezpieczone:Java jest zabezpieczona, ponieważ nie używa jawnych wskaźników. Java udostępnia także koncepcję obsługi kodu bajtowego i wyjątków, co zwiększa bezpieczeństwo.
    Solidny:Java jest silnym językiem programowania, ponieważ wykorzystuje silne zarządzanie pamięcią. Koncepcje takie jak automatyczne zbieranie śmieci, obsługa wyjątków itp. czynią go bardziej niezawodnym.
    Architektura Neutralna:Java jest neutralna architektonicznie, ponieważ nie jest zależna od architektury. W C rozmiar typów danych może się różnić w zależności od architektury (32-bitowa lub 64-bitowa), która nie istnieje w Javie.
    Zinterpretowane:Do wykonania programu Java używa interpretera Just-in-time (JIT) wraz z kompilatorem.
    Wysoka wydajność:Java jest szybsza niż inne tradycyjne interpretowane języki programowania, ponieważ kod bajtowy Java jest „bliski” kodowi natywnemu. Nadal jest trochę wolniejszy niż język skompilowany (np. C++).
    Wielowątkowe:Możemy pisać programy w Javie, które zajmują się wieloma zadaniami jednocześnie, definiując wiele wątków. Główną zaletą wielowątkowości jest to, że nie zajmuje ona pamięci dla każdego wątku. Ma wspólny obszar pamięci. Wątki są ważne w przypadku multimediów, aplikacji internetowych itp.
    Rozpowszechniane:Java jest rozpowszechniana, ponieważ ułatwia użytkownikom tworzenie rozproszonych aplikacji w Javie. RMI i EJB służą do tworzenia aplikacji rozproszonych. Ta funkcja Java umożliwia nam dostęp do plików poprzez wywołanie metod z dowolnego komputera w Internecie.
    Dynamiczny:Java jest językiem dynamicznym. Obsługuje dynamiczne ładowanie klas. Oznacza to, że zajęcia są ładowane na żądanie. Obsługuje także funkcje z języków rodzimych, tj. C i C++.

4) Co rozumiesz przez wirtualną maszynę Java?

Maszyna wirtualna Java to maszyna wirtualna, która umożliwia komputerowi uruchomienie programu Java. JVM działa jak silnik wykonawczy, który wywołuje główną metodę obecną w kodzie Java. JVM to specyfikacja, która musi zostać zaimplementowana w systemie komputerowym. Kod Java jest kompilowany przez JVM jako kod bajtowy, który jest niezależny od komputera i zbliżony do kodu natywnego.


5) Jaka jest różnica między JDK, JRE i JVM?

JVM

JVM to skrót od wirtualnej maszyny Java; jest to maszyna abstrakcyjna zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java. Jest to specyfikacja określająca działanie wirtualnej maszyny Java. Jego wdrożenie zapewniła firma Oracle i inne firmy. Jego implementacja jest znana jako JRE.

Maszyny JVM są dostępne dla wielu platform sprzętowych i programowych (więc JVM zależy od platformy). Jest to instancja uruchomieniowa, która jest tworzona podczas uruchamiania klasy Java. Istnieją trzy pojęcia JVM: specyfikacja, implementacja i instancja.

JRE

JRE oznacza środowisko wykonawcze Java. Jest to implementacja JVM. Java Runtime Environment to zestaw narzędzi programowych używanych do tworzenia aplikacji Java. Służy do zapewnienia środowiska wykonawczego. Jest to implementacja JVM. Istnieje fizycznie. Zawiera zestaw bibliotek i innych plików używanych przez JVM w czasie wykonywania.

JDK

JDK to skrót od Java Development Kit. Jest to środowisko programistyczne służące do tworzenia aplikacji i apletów Java. Istnieje fizycznie. Zawiera narzędzia programistyczne JRE+. JDK jest implementacją dowolnej z poniższych platform Java wydanych przez Oracle Corporation:

  • Platforma Java w wersji standardowej
  • Platforma Java w wersji Enterprise
  • Platforma Java w wersji Micro
Więcej szczegółów.

6) Ile typów obszarów pamięci przydziela JVM?

Dużo typów:

    Obszar klasy (metody):Obszar klasy przechowuje struktury poszczególnych klas, takie jak pula stałych czasu wykonywania, pole, dane metod i kod metod.Sterta:Jest to obszar danych wykonawczych, w którym pamięć jest przydzielana obiektomStos:Java Stack przechowuje ramki. Przechowuje zmienne lokalne i częściowe wyniki oraz odgrywa rolę w wywoływaniu i zwracaniu metod. Każdy wątek ma prywatny stos JVM, tworzony w tym samym czasie co wątek. Przy każdym wywołaniu metody tworzona jest nowa ramka. Ramka zostaje zniszczona po zakończeniu wywoływania jej metody.Rejestr liczników programów:Rejestr PC (licznik programu) zawiera adres aktualnie wykonywanej instrukcji wirtualnej maszyny Java.Stos metod natywnych:Zawiera wszystkie natywne metody stosowane w aplikacji.
Więcej szczegółów.

7) Co to jest kompilator JIT?

Kompilator Just-In-Time (JIT): Służy do poprawy wydajności. JIT kompiluje jednocześnie części kodu bajtowego, które mają podobną funkcjonalność, co zmniejsza ilość czasu potrzebnego na kompilację. Tutaj termin kompilator odnosi się do tłumacza z zestawu instrukcji wirtualnej maszyny Java (JVM) na zestaw instrukcji konkretnego procesora.


8) Jaka jest platforma?

Platforma to środowisko sprzętowe lub programowe, w którym wykonywany jest fragment oprogramowania. Istnieją dwa typy platform, oparte na oprogramowaniu i na sprzęcie. Java zapewnia platformę opartą na oprogramowaniu.


9) Jakie są główne różnice pomiędzy platformą Java a innymi platformami?

Istnieją następujące różnice między platformą Java a innymi platformami.

  • Java jest platformą opartą na oprogramowaniu, podczas gdy inne platformy mogą być platformami sprzętowymi lub platformami opartymi na oprogramowaniu.
  • Java jest wykonywana na innych platformach sprzętowych, podczas gdy inne platformy mogą mieć tylko komponenty sprzętowe.

10) Co nadaje Javie charakter „zapisz raz i uruchom gdziekolwiek”?

Kod bajtowy. Kompilator Java konwertuje programy Java do pliku klasy (kodu bajtowego), który jest językiem pośrednim między kodem źródłowym a kodem maszynowym. Ten kod bajtowy nie jest specyficzny dla platformy i można go wykonać na dowolnym komputerze.


11) Co to jest moduł ładujący klasy?

Classloader to podsystem JVM, który służy do ładowania plików klas. Ilekroć uruchamiamy program Java, jest on najpierw ładowany przez moduł ładujący klasy. W Javie są trzy wbudowane moduły ładujące klasy.

    Moduł ładujący klasy Bootstrap: Jest to pierwszy program ładujący klasy, który jest nadklasą modułu ładującego klasy rozszerzenia. Ładuje rt.jar plik zawierający wszystkie pliki klas Java Standard Edition, takie jak klasy pakietów java.lang, klasy pakietów java.net, klasy pakietów java.util, klasy pakietów java.io, klasy pakietów java.sql itp.Rozszerzenie ClassLoader: Jest to podrzędny moduł ładujący klasy Bootstrap i nadrzędny moduł ładujący klasy System. Ładuje znajdujące się w nim pliki jar $JAVA_HOME/jre/lib/ext informator.Moduł ładujący klasy systemu/aplikacji: To jest moduł ładujący klasy podrzędne modułu ładującego klasy rozszerzenia. Ładuje pliki klas ze ścieżki klas. Domyślnie ścieżka klas jest ustawiona na bieżący katalog. Możesz zmienić ścieżkę klasy za pomocą przełącznika „-cp” lub „-classpath”. Jest również znany jako moduł ładujący klasy aplikacji.

12) Czy pusta nazwa pliku .java jest prawidłową nazwą pliku źródłowego?

Tak, Java pozwala na zapisanie naszego pliku Java w formacie .Jawa tylko musimy to skompilować według javac.java i biegnij obok nazwa klasy Java Weźmy prosty przykład:

 //save by .java only class A{ public static void main(String args[]){ System.out.println('Hello java'); } } //compile by javac .java //run by java A 

skompiluj go według javac.java

przeprowadź to jawa A


13) Czy w Javie jest słowem kluczowym Delete, Next, Main, Exit lub Null?

NIE.


14) Jeśli nie podam żadnych argumentów w wierszu poleceń, to jaka wartość przechowywana w tablicy String zostanie przekazana do metody main(), pusta czy NULL?

Jest pusty, ale nie zerowy.


15) Co się stanie, jeśli napiszę static public void zamiast public static void?

Program kompiluje się i działa poprawnie, ponieważ w Javie kolejność specyfikatorów nie ma znaczenia.


16) Jaka jest domyślna wartość zmiennych lokalnych?

Zmienne lokalne nie są inicjalizowane żadną wartością domyślną, ani prymitywami, ani odniesieniami do obiektów.


17) Jakie są różne specyfikatory dostępu w Javie?

W Javie specyfikatory dostępu to słowa kluczowe używane do definiowania zakresu dostępu metody, klasy lub zmiennej. W Javie istnieją cztery specyfikatory dostępu podane poniżej.

    PublicznyDostęp do klas, metod lub zmiennych zdefiniowanych jako publiczne można uzyskać za pomocą dowolnej klasy lub metody.ChronionyDostęp do Protected może uzyskać klasa tego samego pakietu, podklasa tej klasy lub część tej samej klasy.DomyślnyDomyślne są dostępne tylko w ramach pakietu. Domyślnie wszystkie klasy, metody i zmienne mają domyślny zakres.PrywatnyDostęp do prywatnej klasy, metod i zmiennych zdefiniowanych jako prywatne można uzyskać wyłącznie wewnątrz klasy.

18) Jaki jest cel metod i zmiennych statycznych?

Metody lub zmienne zdefiniowane jako statyczne są wspólne dla wszystkich obiektów klasy. Statyka jest częścią klasy, a nie obiektu. Zmienne statyczne są przechowywane w obszarze klas i nie musimy tworzyć obiektu, aby uzyskać dostęp do takich zmiennych. Dlatego statycznego używa się w przypadku, gdy potrzebujemy zdefiniować zmienne lub metody wspólne dla wszystkich obiektów klasy.

Na przykład podczas zajęć symulujących gromadzenie się uczniów w college'u nazwa uczelni jest wspólną cechą wszystkich uczniów. Dlatego nazwa uczelni zostanie zdefiniowana jako statyczny .


19) Jakie są zalety pakietów w Javie?

Definiowanie pakietów w Javie ma wiele zalet.

  • Pakiety unikają konfliktów nazw.
  • Pakiet zapewnia łatwiejszą kontrolę dostępu.
  • Możemy również mieć ukryte klasy, które nie są widoczne na zewnątrz i używane przez pakiet.
  • Łatwiej jest zlokalizować powiązane klasy.

20) Jaki jest wynik następującego programu Java?

 class Test { public static void main (String args[]) { System.out.println(10 + 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 + 20); } } 

Dane wyjściowe powyższego kodu będą

 30Javatpoint Javatpoint1020 

Wyjaśnienie

W pierwszym przypadku liczby 10 i 20 są traktowane jako liczby i dodawane do liczby 30. Teraz ich suma 30 jest traktowana jako ciąg znaków i łączona z ciągiem znaków Punkt Java . Dlatego wynik będzie 30Javatpoint .

W drugim przypadku ciąg Javatpoint jest łączony z liczbą 10, która będzie ciągiem znaków Punkt Java10 które następnie zostaną połączone z liczbą 20 to be Punkt Java1020 .


21) Jaki jest wynik następującego programu Java?

 class Test { public static void main (String args[]) { System.out.println(10 * 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 * 20); } } 

Dane wyjściowe powyższego kodu będą

 200Javatpoint Javatpoint200 

Wyjaśnienie

W pierwszym przypadku najpierw zostaną pomnożone liczby 10 i 20, a następnie wynik 200 zostanie potraktowany jako ciąg znaków i połączony z ciągiem znaków Punkt Java do wytworzenia produktu 200 punktów Java .

W drugim przypadku liczby 10 i 20 zostaną najpierw pomnożone przez liczbę 200, ponieważ pierwszeństwo mnożenia jest wyższe niż dodawania. Wynik 200 zostanie potraktowany jako ciąg znaków i połączony z ciągiem znaków Punkt Java aby wygenerować wynik jako Javatpoint200 .


22) Jaki jest wynik następującego programu Java?

 class Test { public static void main (String args[]) { for(int i=0; 0; i++) { System.out.println('Hello Javatpoint'); } } } 

Powyższy kod zwróci błąd kompilacji, ponieważ pętla for wymaga w drugiej części wartości logicznej, a my podajemy wartość całkowitą, tj. 0.


Core Java — koncepcje OOP: pytania do wstępnej rozmowy kwalifikacyjnej OOP

Podaje się ponad 50 pytań do wywiadu OOP (Programowanie obiektowe i systemowe). Zostały one jednak podzielone na wiele sekcji, takich jak pytania do wywiadu z konstruktorem, pytania do wywiadu statycznego, pytania do wywiadu dotyczącego dziedziczenia, pytania do wywiadu dotyczącego abstrakcji, pytania do wywiadu dotyczącego polimorfizmu itp. dla lepszego zrozumienia.


23) Co to jest paradygmat obiektowy?

Jest to paradygmat programowania oparty na obiektach posiadających dane i metody zdefiniowane w klasie, do której należy. Paradygmat obiektowy ma na celu uwzględnienie zalet modułowości i możliwości ponownego użycia. Obiekty to instancje klas, które współdziałają ze sobą w celu projektowania aplikacji i programów. Paradygmat obiektowy ma następujące cechy.

  • Stosuje podejście oddolne w projektowaniu programu.
  • Skoncentruj się na danych za pomocą metod operowania na danych obiektu
  • Obejmuje koncepcję taką jak enkapsulacja i abstrakcja, która ukrywa złożoność przed użytkownikiem i pokazuje tylko funkcjonalność.
  • Implementuje podejście w czasie rzeczywistym, takie jak dziedziczenie, abstrakcja itp.
  • Przykładami paradygmatu obiektowego są C++, Simula, Smalltalk, Python, C# itp.

24) Co to jest przedmiot?

Obiekt to jednostka czasu rzeczywistego posiadająca pewien stan i zachowanie. W Javie obiekt jest instancją klasy posiadającą zmienne instancji jako stan obiektu i metody jako zachowanie obiektu. Obiekt klasy można utworzyć za pomocą metody nowy słowo kluczowe.


25) Jaka jest różnica między obiektowym językiem programowania a obiektowym językiem programowania?

Istnieją następujące podstawowe różnice między językiem obiektowym a językiem obiektowym.

  • Języki obiektowe są zgodne ze wszystkimi koncepcjami OOP, podczas gdy język obiektowy nie przestrzega wszystkich koncepcji OOP, takich jak dziedziczenie i polimorfizm.
  • Języki obiektowe nie mają wbudowanych obiektów, podczas gdy języki obiektowe mają wbudowane obiekty, na przykład JavaScript ma obiekt okna.
  • Przykładami programowania obiektowego są Java, C#, Smalltalk itp., natomiast przykładami języków obiektowych są JavaScript, VBScript itp.

26) Jaka będzie wartość początkowa odwołania do obiektu zdefiniowanego jako zmienna instancji?

Wszystkie odniesienia do obiektów są inicjowane na wartość null w Javie.


Core Java — koncepcje OOP: pytania do rozmowy kwalifikacyjnej z konstruktorem


27) Co to jest konstruktor?

Konstruktor można zdefiniować jako specjalny typ metody używany do inicjowania stanu obiektu. Jest wywoływana podczas tworzenia instancji klasy i przydzielana jest pamięć dla obiektu. Za każdym razem obiekt jest tworzony przy użyciu metody nowy słowem kluczowym, wywoływany jest domyślny konstruktor klasy. Nazwa konstruktora musi być podobna do nazwy klasy. Konstruktor nie może mieć jawnego typu zwracanego.

Więcej szczegółów.

28) Ile typów konstruktorów jest używanych w Javie?

W oparciu o parametry przekazane w konstruktorach w Javie istnieją dwa typy konstruktorów.

    Domyślny konstruktor:konstruktor domyślny to ten, który nie akceptuje żadnej wartości. Konstruktor domyślny służy głównie do inicjowania zmiennej instancji wartościami domyślnymi. Można go również wykorzystać do wykonania przydatnego zadania podczas tworzenia obiektu. Konstruktor domyślny jest wywoływany niejawnie przez kompilator, jeśli w klasie nie zdefiniowano żadnego konstruktora.Konstruktor parametryczny:Konstruktor sparametryzowany to taki, który może inicjalizować zmienne instancji podanymi wartościami. Innymi słowy, możemy powiedzieć, że konstruktory, które mogą przyjąć argumenty, nazywane są konstruktorami sparametryzowanymi.
Konstruktorzy Java

29) Jaki jest cel konstruktora domyślnego?

Celem konstruktora domyślnego jest przypisanie wartości domyślnej obiektom. Kompilator Java tworzy domyślnie konstruktor domyślny, jeśli w klasie nie ma konstruktora.

 class Student3{ int id; String name; void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student3 s1=new Student3(); Student3 s2=new Student3(); s1.display(); s2.display(); } } 
Przetestuj teraz

Wyjście:

 0 null 0 null 

Wyjaśnienie: W powyższej klasie nie tworzysz żadnego konstruktora, więc kompilator udostępnia konstruktor domyślny. Tutaj wartości 0 i null są dostarczane przez konstruktora domyślnego.

Domyślny konstruktor Java
Więcej szczegółów.

30) Czy konstruktor zwraca jakąś wartość?

Lata: tak, Konstruktor domyślnie zwraca bieżącą instancję klasy (w konstruktorze nie można użyć jawnego typu zwracanego). Więcej szczegółów.


31) Czy konstruktor jest dziedziczony?

Nie, konstruktor nie jest dziedziczony.


32) Czy możesz stworzyć konstruktora jako finalnego?

Nie, konstruktor nie może być ostateczny.

słuchaj portu

33) Czy możemy przeciążać konstruktory?

Tak, konstruktory można przeciążać zmieniając liczbę argumentów akceptowanych przez konstruktor lub zmieniając typ danych parametrów. Rozważ następujący przykład.

 class Test { int i; public Test(int k) { i=k; } public Test(int k, int m) { System.out.println('Hi I am assigning the value max(k, m) to i'); if(k>m) { i=k; } else { i=m; } } } public class Main { public static void main (String args[]) { Test test1 = new Test(10); Test test2 = new Test(12, 15); System.out.println(test1.i); System.out.println(test2.i); } } 

W powyższym programie konstruktor Test jest przeciążony innym konstruktorem. W pierwszym wywołaniu konstruktora wywoływany jest konstruktor z jednym argumentem, a i zostanie zainicjalizowany wartością 10. Jednak w drugim wywołaniu konstruktora wywoływany jest konstruktor z 2 argumentami i zostanie zainicjalizowany z wartością 15.


34) Co rozumiesz przez konstruktor kopiujący w Javie?

W Javie nie ma konstruktora kopiującego. Możemy jednak kopiować wartości z jednego obiektu do drugiego, jak konstruktor kopiujący w C++.

Istnieje wiele sposobów kopiowania wartości jednego obiektu do drugiego w Javie. Oni są:

  • Przez konstruktora
  • Poprzez przypisanie wartości jednego obiektu do drugiego
  • Za pomocą metody clone() klasy Object

W tym przykładzie skopiujemy wartości jednego obiektu do drugiego za pomocą konstruktora Java.

 //Java program to initialize the values from one object to another class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Przetestuj teraz

Wyjście:

 111 Karan 111 Karan 

35) Jakie są różnice pomiędzy konstruktorami i metodami?

Istnieje wiele różnic pomiędzy konstruktorami i metodami. Poniżej podano je.

Konstruktor JavaMetoda Java
Konstruktor służy do inicjowania stanu obiektu.Do ujawnienia zachowania obiektu używana jest metoda.
Konstruktor nie może mieć typu zwracanego.Metoda musi mieć typ zwracany.
Konstruktor jest wywoływany niejawnie.Metoda jest wywoływana jawnie.
Kompilator Java udostępnia konstruktor domyślny, jeśli nie masz żadnego konstruktora w klasie.Kompilator w żadnym przypadku nie udostępnia tej metody.
Nazwa konstruktora musi być taka sama jak nazwa klasy.Nazwa metody może, ale nie musi, być taka sama jak nazwa klasy.

Konstruktory Java a metody

36) Jaki jest wynik następującego programu Java?

 public class Test { Test(int a, int b) { System.out.println('a = '+a+' b = '+b); } Test(int a, float b) { System.out.println('a = '+a+' b = '+b); } public static void main (String args[]) { byte a = 10; byte b = 15; Test test = new Test(a,b); } } 

Dane wyjściowe następującego programu to:

 a = 10 b = 15 

Tutaj typ danych zmiennych aib, tj. bajt, zostaje awansowany do int i zostaje wywołany pierwszy sparametryzowany konstruktor z dwoma parametrami całkowitymi.


37) Jaki jest wynik następującego programu Java?

 class Test { int i; } public class Main { public static void main (String args[]) { Test test = new Test(); System.out.println(test.i); } } 

Dane wyjściowe programu wynoszą 0, ponieważ zmienna i została wewnętrznie zainicjowana na 0. Ponieważ wiemy, że domyślny konstruktor jest wywoływany niejawnie, jeśli w klasie nie ma konstruktora, zmienna i jest inicjowana na 0, ponieważ w klasie nie ma konstruktora.


38) Jaki jest wynik następującego programu Java?

 class Test { int test_a, test_b; Test(int a, int b) { test_a = a; test_b = b; } public static void main (String args[]) { Test test = new Test(); System.out.println(test.test_a+' '+test.test_b); } } 

Tam jest błąd kompilatora w programie, ponieważ w metodzie głównej wywołano konstruktora domyślnego, którego nie ma w klasie. Jednakże w klasie Test istnieje tylko jeden sparametryzowany konstruktor. W związku z tym żaden konstruktor domyślny nie jest wywoływany przez konstruktora w sposób niejawny.


Core Java — koncepcje OOPs: pytania do wywiadu ze statycznym słowem kluczowym


39) Co to jest zmienna statyczna?

Zmienna statyczna służy do odwoływania się do wspólnej właściwości wszystkich obiektów (która nie jest unikalna dla każdego obiektu), np. nazwy firmy pracowników, nazwy uczelni studentów itp. Zmienna statyczna jest zapamiętywana tylko raz w obszarze zajęć o godz. czas ładowania zajęć. Użycie zmiennej statycznej sprawia, że ​​program jest bardziej wydajny pod względem pamięci (oszczędza pamięć). Zmienna statyczna należy do klasy, a nie do obiektu.

 //Program of static variable class Student8{ int rollno; String name; static String college ='ITS'; Student8(int r,String n){ rollno = r; name = n; } void display (){System.out.println(rollno+' '+name+' '+college);} public static void main(String args[]){ Student8 s1 = new Student8(111,'Karan'); Student8 s2 = new Student8(222,'Aryan'); s1.display(); s2.display(); } } 
Przetestuj teraz
 Output:111 Karan ITS 222 Aryan ITS 

Więcej szczegółów.

40) Co to jest metoda statyczna?

  • Metoda statyczna należy do klasy, a nie do obiektu.
  • Nie ma potrzeby tworzenia obiektu, aby wywoływać metody statyczne.
  • Metoda statyczna może uzyskać dostęp do zmiennej statycznej i ją zmienić.
Więcej szczegółów.

41) Jakie ograniczenia dotyczą statycznych metod Java?

Do metod statycznych stosowane są dwa główne ograniczenia.

  • Metoda statyczna nie może używać niestatycznego elementu danych ani bezpośrednio wywoływać metody niestatycznej.
  • this i super nie mogą być używane w kontekście statycznym, ponieważ są niestatyczne.

42) Dlaczego główna metoda jest statyczna?

Ponieważ obiekt nie musi wywoływać metody statycznej. Jeśli sprawimy, że metoda główna będzie niestatyczna, JVM będzie musiał najpierw utworzyć swój obiekt, a następnie wywołać metodę main(), co doprowadzi do dodatkowej alokacji pamięci. Więcej szczegółów.


43) Czy możemy zastąpić metody statyczne?

Nie, nie możemy zastąpić metod statycznych.

44) Co to jest blok statyczny?

Blok statyczny służy do inicjowania statycznego elementu danych. Jest wykonywany przed metodą główną, w momencie ładowania klasy.

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Przetestuj teraz
 Output: static block is invoked Hello main 

Więcej szczegółów.

45) Czy możemy wykonać program bez metody main()?

Odp.) Nie, przed wersją JDK 1.7 było to możliwe przy użyciu bloku statycznego. Od wersji JDK 1.7 nie jest to możliwe. Więcej szczegółów.


46) Co się stanie, jeśli z podpisu metody głównej zostanie usunięty modyfikator statyczny?

Program się kompiluje. Jednak w czasie wykonywania zgłasza błąd „NoSuchMethodError”.


47) Jaka jest różnica pomiędzy metodą statyczną (klasową) a metodą instancji?

metoda statyczna lub klasowametoda instancji
1) Metoda zadeklarowana jako statyczna nazywana jest metodą statyczną.Metoda, która nie jest zadeklarowana jako statyczna, nazywana jest metodą instancji.
2) Nie musimy tworzyć obiektów, aby wywoływać metody statyczne.Obiekt musi wywoływać metody instancji.
3) Do elementów niestatycznych (instancji) nie można uzyskać bezpośredniego dostępu w kontekście statycznym (metoda statyczna, blok statyczny i statyczna klasa zagnieżdżona).Dostęp do zmiennych statycznych i niestatycznych można uzyskać w metodach instancji.
4)Na przykład: public static int kostka(int n){ return n*n*n;}Na przykład: public void msg(){...}.

48) Czy możemy uczynić konstruktory statycznymi?

Jak wiemy, kontekst statyczny (metoda, blok lub zmienna) należy do klasy, a nie do obiektu. Ponieważ konstruktory są wywoływane tylko wtedy, gdy obiekt jest tworzony, nie ma sensu ustawiać konstruktorów statycznie. Jeśli jednak spróbujesz to zrobić, kompilator wyświetli błąd kompilatora.


49) Czy możemy uczynić metody abstrakcyjne statycznymi w Javie?

Jeśli w Javie uczynimy metody abstrakcyjne statycznymi, staną się one częścią klasy i będziemy mogli je bezpośrednio wywołać, co jest niepotrzebne. Wywołanie niezdefiniowanej metody jest całkowicie bezużyteczne, dlatego jest niedozwolone.


50) Czy możemy zadeklarować zmienne statyczne i metody w klasie abstrakcyjnej?

Tak, możemy deklarować zmienne i metody statyczne w metodzie abstrakcyjnej. Ponieważ wiemy, że nie ma wymogu zapewnienia dostępu obiektu do kontekstu statycznego, możemy uzyskać dostęp do kontekstu statycznego zadeklarowanego wewnątrz klasy abstrakcyjnej, używając nazwy klasy abstrakcyjnej. Rozważ następujący przykład.

 abstract class Test { static int i = 102; static void TestMethod() { System.out.println('hi !! I am good !!'); } } public class TestClass extends Test { public static void main (String args[]) { Test.TestMethod(); System.out.println('i = '+Test.i); } } 

Wyjście

 hi !! I am good !! i = 102 

Core Java — koncepcje OOP: pytania do rozmowy kwalifikacyjnej na temat dziedziczenia


51) Co jest Ten słowo kluczowe w Javie?

The Ten słowo kluczowe jest zmienną referencyjną, która odnosi się do bieżącego obiektu. Istnieją różne zastosowania tego słowa kluczowego w Javie. Można go używać do odwoływania się do bieżących właściwości klasy, takich jak metody instancji, zmienne, konstruktory itp. Można go również przekazać jako argument do metod lub konstruktorów. Można go również zwrócić z metody jako bieżącą instancję klasy.

Java to słowo kluczowe
Więcej szczegółów.

52) Jakie są główne zastosowania tego słowa kluczowego?

Istnieją następujące zastosowania Ten słowo kluczowe.

    Tenmoże być używany do odwoływania się do zmiennej instancji bieżącej klasy.Tenmożna użyć do wywołania metody bieżącej klasy (domyślnie)Ten()można użyć do wywołania konstruktora bieżącej klasy.Tenmożna przekazać jako argument w wywołaniu metody.Tenmożna przekazać jako argument w wywołaniu konstruktora.Tenmożna użyć do zwrócenia bieżącej instancji klasy z metody.

53) Czy możemy przypisać odniesienie do Ten zmienny?

Nie, nie można tego przypisać do żadnej wartości, ponieważ zawsze wskazuje ona na bieżący obiekt klasy i jest to ostateczne odniesienie w Javie. Jeśli jednak spróbujemy to zrobić, wyświetli się błąd kompilatora. Rozważ następujący przykład.

 public class Test { public Test() { this = null; System.out.println('Test class constructor called'); } public static void main (String args[]) { Test t = new Test(); } } 

Wyjście

 Test.java:5: error: cannot assign a value to final variable this this = null; ^ 1 error 

54) Kan Ten słowo kluczowe może być używane do odsyłania statycznych członków?

Tak, możliwe jest użycie tego słowa kluczowego do odwoływania się do elementów statycznych, ponieważ jest to tylko zmienna referencyjna, która odwołuje się do bieżącego obiektu klasy. Jednakże, jak wiemy, nie jest konieczne uzyskiwanie dostępu do zmiennych statycznych za pośrednictwem obiektów, dlatego też nie jest najlepszą praktyką używanie tego do odwoływania się do elementów statycznych. Rozważ następujący przykład.

 public class Test { static int i = 10; public Test () { System.out.println(this.i); } public static void main (String args[]) { Test t = new Test(); } } 

Wyjście

 10 

55) W jaki sposób można wykonać łączenie konstruktorów za pomocą tego słowa kluczowego?

Łączenie konstruktorów umożliwia wywoływanie jednego konstruktora z innego konstruktora klasy w odniesieniu do bieżącego obiektu klasy. Możemy użyć tego słowa kluczowego do wykonania łączenia konstruktorów w tej samej klasie. Rozważmy następujący przykład, który ilustruje, jak możemy użyć tego słowa kluczowego, aby uzyskać połączenie konstruktorów.

 public class Employee { int id,age; String name, address; public Employee (int age) { this.age = age; } public Employee(int id, int age) { this(age); this.id = id; } public Employee(int id, int age, String name, String address) { this(id, age); this.name = name; this.address = address; } public static void main (String args[]) { Employee emp = new Employee(105, 22, 'Vikas', 'Delhi'); System.out.println('ID: '+emp.id+' Name:'+emp.name+' age:'+emp.age+' address: '+emp.address); } } 

Wyjście

 ID: 105 Name:Vikas age:22 address: Delhi 

56) Jakie są zalety przekazania tego do metody zamiast do samego obiektu bieżącej klasy?

Jak wiemy, odnosi się to do aktualnego obiektu klasy, zatem musi być podobne do aktualnego obiektu klasy. Jednakże przekazanie tego do metody zamiast do obiektu bieżącej klasy może wiązać się z dwiema głównymi zaletami.

  • to jest ostateczna zmienna. Dlatego nie można tego przypisać do żadnej nowej wartości, podczas gdy bieżący obiekt klasy może nie być ostateczny i można go zmienić.
  • można tego użyć w bloku zsynchronizowanym.

57) Co to jest dziedzictwo?

Dziedziczenie to mechanizm, dzięki któremu jeden obiekt nabywa wszystkie właściwości i zachowanie innego obiektu innej klasy. Służy do ponownego wykorzystania kodu i zastępowania metod. Ideą dziedziczenia w Javie jest to, że możesz tworzyć nowe klasy, które są zbudowane na istniejących klasach. Dziedzicząc z istniejącej klasy, możesz ponownie wykorzystać metody i pola klasy nadrzędnej. Co więcej, możesz dodać nowe metody i pola również do swojej bieżącej klasy. Dziedziczenie reprezentuje relację IS-A, znaną również jako relacja rodzic-dziecko.

W Javie istnieje pięć typów dziedziczenia.

  • Dziedziczenie jednopoziomowe
  • Dziedziczenie wielopoziomowe
  • Dziedziczenie wielokrotne
  • Dziedziczenie hierarchiczne
  • Dziedziczenie hybrydowe

Dziedziczenie wielokrotne nie jest obsługiwane w Javie poprzez klasę.

Więcej szczegółów.

58) Dlaczego w Javie stosuje się dziedziczenie?

Poniżej przedstawiono różne zalety korzystania z dziedziczenia w Javie.

  • Dziedziczenie zapewnia możliwość ponownego wykorzystania kodu. Klasa pochodna nie musi redefiniować metody klasy bazowej, chyba że musi zapewnić specyficzną implementację metody.
  • Nie można osiągnąć polimorfizmu w czasie wykonywania bez użycia dziedziczenia.
  • Możemy symulować dziedziczenie klas za pomocą obiektów czasu rzeczywistego, co czyni OOP bardziej realistycznymi.
  • Dziedziczenie zapewnia ukrywanie danych. Klasa bazowa może ukryć niektóre dane przed klasą pochodną, ​​ustawiając je jako prywatne.
  • Przesłonięcia metody nie można osiągnąć bez dziedziczenia. Zastępując metodę, możemy dać specyficzną implementację jakiejś podstawowej metody zawartej w klasie bazowej.

59) Która klasa jest nadklasą dla wszystkich klas?

Klasa obiektowa jest nadklasą wszystkich innych klas w Javie.


60) Dlaczego w Javie nie jest obsługiwane dziedziczenie wielokrotne?

Aby zmniejszyć złożoność i uprościć język, w Javie nie jest obsługiwane dziedziczenie wielokrotne. Rozważmy scenariusz, w którym A, B i C to trzy klasy. Klasa C dziedziczy klasy A i B. Jeśli klasy A i B mają tę samą metodę i wywołasz ją z obiektu klasy podrzędnej, wywołanie metody klasy A lub B będzie niejednoznaczne.

Ponieważ błędy w czasie kompilacji są lepsze niż błędy w czasie wykonywania, Java renderuje błąd w czasie kompilacji, jeśli odziedziczysz 2 klasy. Niezależnie od tego, czy masz tę samą, czy inną metodę, wystąpi błąd w czasie kompilacji.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were Public Static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Przetestuj teraz
 Compile Time Error 

61) Co to jest agregacja?

Agregację można zdefiniować jako relację między dwiema klasami, w której klasa agregująca zawiera odniesienie do klasy, której jest właścicielem. Agregację najlepiej opisać jako a ma relacja. Na przykład zagregowana klasa Pracownik posiadająca różne pola, takie jak wiek, imię i nazwisko oraz wynagrodzenie, zawiera także obiekt klasy Adres posiadający różne pola, takie jak Adres-Linia 1, Miasto, Stan i kod PIN. Innymi słowy, możemy powiedzieć, że Pracownik (klasa) ma obiekt klasy Adres. Rozważ następujący przykład.

Adres.java

 public class Address { String city,state,country; public Address(String city, String state, String country) { this.city = city; this.state = state; this.country = country; } } 

Pracownik.java

 public class Emp { int id; String name; Address address; public Emp(int id, String name,Address address) { this.id = id; this.name = name; this.address=address; } void display(){ System.out.println(id+' '+name); System.out.println(address.city+' '+address.state+' '+address.country); } public static void main(String[] args) { Address address1=new Address('gzb','UP','india'); Address address2=new Address('gno','UP','india'); Emp e=new Emp(111,'varun',address1); Emp e2=new Emp(112,'arun',address2); e.display(); e2.display(); } } 

Wyjście

 111 varun gzb UP india 112 arun gno UP india 

62) Czym jest kompozycja?

Trzymanie odniesienia do klasy w innej klasie nazywa się kompozycją. Kiedy obiekt zawiera inny obiekt, jeśli zawarty obiekt nie może istnieć bez istnienia obiektu kontenera, wówczas nazywa się to kompozycją. Innymi słowy, możemy powiedzieć, że kompozycja jest szczególnym przypadkiem agregacji, który reprezentuje silniejszy związek między dwoma obiektami. Przykład: Klasa składa się z uczniów. Uczeń nie może istnieć bez zajęć. Istnieje układ między klasą a uczniami.


63) Jaka jest różnica między agregacją a kompozycją?

Agregacja reprezentuje słabą relację, podczas gdy kompozycja reprezentuje silną relację. Na przykład rower ma wskaźnik (agregację), ale rower ma silnik (skład).


64) Dlaczego Java nie obsługuje wskaźników?

Wskaźnik jest zmienną, która odnosi się do adresu pamięci. Nie są używane w Javie, ponieważ są niebezpieczne (niezabezpieczone) i trudne do zrozumienia.


65) Co jest super w Javie?

The Super słowo kluczowe w Javie jest zmienną referencyjną używaną do odwoływania się do bezpośredniego obiektu klasy nadrzędnej. Za każdym razem, gdy tworzysz instancję podklasy, domyślnie tworzona jest instancja klasy nadrzędnej, do której odwołuje się super zmienna referencyjna. Funkcja super() jest wywoływana w konstruktorze klasy domyślnie przez kompilator, jeśli nie ma funkcji super lub this.

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); } } 
Przetestuj teraz

Wyjście:

 animal is created dog is created 
Więcej szczegółów.

66) W jaki sposób można wykonać łączenie konstruktorów za pomocą słowa kluczowego super?

 class Person { String name,address; int age; public Person(int age, String name, String address) { this.age = age; this.name = name; this.address = address; } } class Employee extends Person { float salary; public Employee(int age, String name, String address, float salary) { super(age,name,address); this.salary = salary; } } public class Test { public static void main (String args[]) { Employee e = new Employee(22, 'Mukesh', 'Delhi', 90000); System.out.println('Name: '+e.name+' Salary: '+e.salary+' Age: '+e.age+' Address: '+e.address); } } 

Wyjście

 Name: Mukesh Salary: 90000.0 Age: 22 Address: Delhi 

67) Jakie są główne zastosowania słowa kluczowego super?

Istnieją następujące zastosowania słowa super.

  • super może być użyte do odniesienia się do zmiennej instancji klasy bezpośrednio nadrzędnej.
  • super można użyć do wywołania metody klasy bezpośrednio nadrzędnej.
  • super() może zostać użyta do wywołania bezpośredniego konstruktora klasy nadrzędnej.

68) Jakie są różnice między tym a super słowem kluczowym?

Istnieją następujące różnice między tym słowem kluczowym a super.

  • Słowo kluczowe super zawsze wskazuje na kontekst klasy nadrzędnej, podczas gdy to słowo kluczowe zawsze wskazuje na bieżący kontekst klasy.
  • Słowo super służy głównie do inicjowania zmiennych klasy bazowej w konstruktorze klasy pochodnej, podczas gdy to słowo kluczowe służy głównie do rozróżnienia zmiennych lokalnych od zmiennych instancji, gdy są przekazywane w konstruktorze klasy.
  • Super i this musi być pierwszą instrukcją wewnątrz konstruktora, w przeciwnym razie kompilator zgłosi błąd.

69) Jaki jest wynik następującego programu Java?

 class Person { public Person() { System.out.println('Person class constructor called'); } } public class Employee extends Person { public Employee() { System.out.println('Employee class constructor called'); } public static void main (String args[]) { Employee e = new Employee(); } } 

Wyjście

 Person class constructor called Employee class constructor called 

Wyjaśnienie

Kompilator wywołuje metodę super() jeśli żadna super() ani this() nie jest jawnie uwzględniona w konstruktorze klasy pochodnej. Dlatego w tym przypadku najpierw wywoływany jest konstruktor klasy Osoba, a następnie konstruktor klasy Pracownik.


70) Czy możesz używać this() i super() w konstruktorze?

Nie, ponieważ this() i super() muszą być pierwszą instrukcją w konstruktorze klasy.

Przykład:

 public class Test{ Test() { super(); this(); System.out.println('Test class object is created'); } public static void main(String []args){ Test t = new Test(); } } 

Wyjście:

 Test.java:5: error: call to this must be first statement in constructor 

71)Co to jest klonowanie obiektów?

Klonowanie obiektu służy do tworzenia dokładnej kopii obiektu. Do klonowania obiektu używana jest metoda clone() klasy Object. The Java.lang.Możliwość klonowania interfejs musi być zaimplementowany przez klasę, której klon obiektowy chcemy utworzyć. Jeśli nie zaimplementujemy interfejsu Cloneable, metoda clone() generuje wyjątek CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Więcej szczegółów.

Core Java — koncepcje OOP: Przeciążanie metod Pytania do wywiadu


72) Co to jest przeciążanie metody?

Przeciążanie metod to technika polimorfizmu, która pozwala nam tworzyć wiele metod o tej samej nazwie, ale innym podpisie. Przeciążanie metod możemy osiągnąć na dwa sposoby.

  • Zmieniając liczbę argumentów
  • Zmieniając typ danych argumentów

Przeciążanie metod zwiększa czytelność programu. Przeciążanie metod ma na celu szybkie wymyślenie programu.

Więcej szczegółów.

73) Dlaczego przeciążanie metody nie jest możliwe poprzez zmianę typu zwracanego w Javie?

W Javie przeciążanie metod nie jest możliwe poprzez zmianę typu zwracanego programu, aby uniknąć niejednoznaczności.

 class Adder{ static int add(int a,int b){return a+b;} static double add(int a,int b){return a+b;} } class TestOverloading3{ public static void main(String[] args){ System.out.println(Adder.add(11,11));//ambiguity }} 
Przetestuj teraz

Wyjście:

 Compile Time Error: method add(int, int) is already defined in class Adder 
Więcej szczegółów.

74) Czy możemy przeciążać metody, czyniąc je statycznymi?

Nie, nie możemy przeciążać metod, po prostu stosując do nich słowo kluczowe static (liczba parametrów i typów jest taka sama). Rozważ następujący przykład.

 public class Animal { void consume(int a) { System.out.println(a+' consumed!!'); } static void consume(int a) { System.out.println('consumed static '+a); } public static void main (String args[]) { Animal a = new Animal(); a.consume(10); Animal.consume(20); } } 

Wyjście

 Animal.java:7: error: method consume(int) is already defined in class Animal static void consume(int a) ^ Animal.java:15: error: non-static method consume(int) cannot be referenced from a static context Animal.consume(20); ^ 2 errors 

75) Czy możemy przeciążyć metodę main()?

Tak, możemy mieć dowolną liczbę głównych metod w programie Java, stosując przeciążenie metod.

Więcej szczegółów.

76) Co to jest przeciążanie metod promocją typu?

Promocja według typu to przeciążanie metody, co oznacza, że ​​jeden typ danych może zostać niejawnie awansowany do innego, jeśli nie zostanie znalezione dokładne dopasowanie.

Przeciążanie metody Java z promocją typu

Jak pokazano na powyższym diagramie, bajt może zostać promowany do wartości krótkiej, int, długiej, zmiennoprzecinkowej lub podwójnej. Krótki typ danych można promować do typu int, long, float lub double. Typ danych char można promować do int, long, float lub double i tak dalej. Rozważ następujący przykład.

 class OverloadingCalculation1{ void sum(int a,long b){System.out.println(a+b);} void sum(int a,int b,int c){System.out.println(a+b+c);} public static void main(String args[]){ OverloadingCalculation1 obj=new OverloadingCalculation1(); obj.sum(20,20);//now second int literal will be promoted to long obj.sum(20,20,20); } } 
Przetestuj teraz

Wyjście

 40 60 

77) Jaki jest wynik następującego programu Java?

 class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } } 

Wyjście

 OverloadingCalculation3.java:7: error: reference to sum is ambiguous obj.sum(20,20);//now ambiguity ^ both method sum(int,long) in OverloadingCalculation3 and method sum(long,int) in OverloadingCalculation3 match 1 error 

Wyjaśnienie

Istnieją dwie metody zdefiniowane o tej samej nazwie, czyli suma. Pierwsza metoda akceptuje typ całkowity i długi, podczas gdy druga metoda akceptuje typ długi i całkowity. Przekazano parametr, który wynosi a = 20, b = 20. Nie możemy powiedzieć, która metoda zostanie wywołana, ponieważ nie ma jasnego rozróżnienia pomiędzy literałem całkowitym a literałem długim. To jest przypadek niejasności. Dlatego kompilator zgłosi błąd.


Core Java — koncepcje OOP: metoda pomijania pytań podczas rozmowy kwalifikacyjnej


78) Co to jest nadpisywanie metod:

Jeśli podklasa zapewnia specyficzną implementację metody, która jest już dostarczona przez jej klasę nadrzędną, nazywa się to przesłonięciem metody. Służy do polimorfizmu w czasie wykonywania i do implementacji metod interfejsu.

Zasady przesłaniania metod

  • Metoda musi mieć taką samą nazwę jak w klasie nadrzędnej.
  • Metoda musi mieć taki sam podpis jak w klasie nadrzędnej.
  • Dwie klasy muszą mieć między sobą relację IS-A.
Więcej szczegółów.


79) Czy możemy zastąpić metodę statyczną?

Nie, nie można zastąpić metody statycznej, ponieważ jest ona częścią klasy, a nie obiektu.


80) Dlaczego nie możemy zastąpić metody statycznej?

Dzieje się tak dlatego, że metoda statyczna jest częścią klasy i jest powiązana z klasą, podczas gdy metoda instancji jest powiązana z obiektem, a metoda statyczna pobiera pamięć w obszarze klasy, a instancja pobiera pamięć na stercie.


81) Czy możemy zastąpić przeciążoną metodę?

Tak.


82) Różnica pomiędzy metodą Przeciążanie i Zastępowanie.

Przeciążenie metodyZastępowanie metody
1) Przeciążanie metod zwiększa czytelność programu.Nadpisywanie metod zapewnia specyficzną implementację metody, która jest już zapewniona przez jej nadklasę.
2) W klasie występuje przeciążanie metod.Przesłanianie metod ma miejsce w dwóch klasach, między którymi istnieje relacja IS-A.
3) W takim przypadku parametry muszą być różne.W takim przypadku parametry muszą być takie same.

83) Czy możemy zastąpić metody prywatne?

Nie, nie możemy zastąpić metod prywatnych, ponieważ zakres metod prywatnych jest ograniczony do klasy i nie możemy uzyskać do nich dostępu poza klasą.


84) Czy możemy zmienić zakres nadpisanej metody w podklasie?

Tak, możemy zmienić zakres nadpisywanej metody w podklasie. Musimy jednak zauważyć, że nie możemy zmniejszać dostępności metody. Zmieniając dostępność metody, należy zwrócić uwagę na następujący punkt.

  • Prywatny można zmienić na chroniony, publiczny lub domyślny.
  • Chronione można zmienić na publiczne lub domyślne.
  • Wartość domyślną można zmienić na publiczną.
  • Publiczność zawsze pozostanie publiczna.

85) Czy możemy zmodyfikować klauzulę rzutów metody nadklasy, jednocześnie nadpisując ją w podklasie?

Tak, możemy modyfikować klauzulę rzucającą metody nadklasy, jednocześnie nadpisując ją w podklasie. Istnieją jednak pewne zasady, których należy przestrzegać podczas zastępowania w przypadku obsługi wyjątku.

  • Jeśli metoda nadklasy nie zadeklaruje wyjątku, metoda nadpisana podklasy nie może zadeklarować zaznaczonego wyjątku, ale może zadeklarować niesprawdzony wyjątek.
  • Jeśli metoda nadklasy deklaruje wyjątek, metoda nadpisana podklasy może zadeklarować to samo, wyjątek podklasy lub brak wyjątku, ale nie może zadeklarować wyjątku nadrzędnego.

86) Jaki jest wynik następującego programu Java?

 class Base { void method(int a) { System.out.println('Base class method called with integer a = '+a); } void method(double d) { System.out.println('Base class method called with double d ='+d); } } class Derived extends Base { @Override void method(double d) { System.out.println('Derived class method called with double d ='+d); } } public class Main { public static void main(String[] args) { new Derived().method(10); } } 

Wyjście

 Base class method called with integer a = 10 

Wyjaśnienie

Metoda() jest przeciążona w klasie Base, podczas gdy jest wyprowadzana w klasie Derived z typem double jako parametrem. W wywołaniu metody przekazywana jest liczba całkowita.

87) Czy w Javie można mieć funkcje wirtualne?

Tak, wszystkie funkcje w Javie są domyślnie wirtualne.


88) Co to jest kowariantny typ zwrotu?

Teraz, począwszy od Java5, możliwe jest przesłonięcie dowolnej metody poprzez zmianę typu zwracanego, jeśli typem zwracanym przez metodę przesłaniania podklasy jest typ podklasy. Jest to tzw. kowariantny typ zwrotu. Kowariantny typ zwracany określa, że ​​typ zwracany może zmieniać się w tym samym kierunku, co podklasa.

 class A{ A get(){return this;} } class B1 extends A{ B1 get(){return this;} void message(){System.out.println('welcome to covariant return type');} public static void main(String args[]){ new B1().get().message(); } } 
Przetestuj teraz
 Output: welcome to covariant return type 
Więcej szczegółów.

89) Jaki jest wynik następującego programu Java?

 class Base { public void baseMethod() { System.out.println('BaseMethod called ...'); } } class Derived extends Base { public void baseMethod() { System.out.println('Derived method called ...'); } } public class Test { public static void main (String args[]) { Base b = new Derived(); b.baseMethod(); } } 

Wyjście

 Derived method called ... 

Wyjaśnienie

Metoda klasy Base, czyli baseMethod(), jest nadpisywana w klasie Derived. W klasie Test zmienna referencyjna b (typu Base class) odnosi się do instancji klasy Derived. W tym przypadku polimorfizm środowiska wykonawczego jest osiągany pomiędzy klasami Base i Derived. W czasie kompilacji w klasie Base sprawdzana jest obecność metody baseMethod. Jeżeli jest obecna to program się skompilował, w przeciwnym razie wyświetli się błąd kompilatora. W tym przypadku baseMethod występuje w klasie Base; dlatego został pomyślnie skompilowany. Jednak w czasie wykonywania sprawdza, czy metoda baseMethod została zastąpiona przez klasę Derived, jeśli tak, to wywoływana jest metoda klasy Derived, w przeciwnym razie wywoływana jest metoda klasy Base. W tym przypadku klasa Derived zastępuje metodę baseMethod; dlatego wywoływana jest metoda klasy Derived.


Core Java — koncepcje OOPs: końcowe pytania do wywiadu dotyczącego słowa kluczowego


90) Jaka jest ostateczna zmienna?

W Javie zmienna final służy do ograniczenia użytkownikowi możliwości jej aktualizacji. Jeśli zainicjujemy zmienną końcową, nie będziemy mogli zmienić jej wartości. Innymi słowy, możemy powiedzieć, że zmienna końcowa raz przypisana do wartości nie może być już później zmieniona. Zmienną końcową, która nie jest przypisana do żadnej wartości, można przypisać jedynie poprzez konstruktor klasy.

ostatnie słowo kluczowe w Javie
 class Bike9{ final int speedlimit=90;//final variable void run(){ speedlimit=400; } public static void main(String args[]){ Bike9 obj=new Bike9(); obj.run(); } }//end of class 
Przetestuj teraz
 Output:Compile Time Error 
Więcej szczegółów.

91) Jaka jest ostateczna metoda?

Jeśli zmienimy dowolną metodę na metodę ostateczną, nie możemy jej zastąpić. Więcej szczegółów.

 class Bike{ final void run(){System.out.println('running');} } class Honda extends Bike{ void run(){System.out.println('running safely with 100kmph');} public static void main(String args[]){ Honda honda= new Honda(); honda.run(); } } 
Przetestuj teraz
 Output:Compile Time Error 

92) Jaka jest ostatnia klasa?

Jeśli którąkolwiek klasę uczynimy ostateczną, nie będziemy mogli dziedziczyć jej do żadnej podklasy.

 final class Bike{} class Honda1 extends Bike{ void run(){System.out.println('running safely with 100kmph');} public static void main(String args[]){ Honda1 honda= new Honda1(); honda.run(); } } 
Przetestuj teraz
 Output:Compile Time Error 
Więcej szczegółów.

93) Jaka jest ostatnia zmienna pusta?

Zmienna końcowa, niezainicjowana w momencie deklaracji, nazywana jest końcową zmienną pustą. Nie możemy bezpośrednio zainicjować ostatniej pustej zmiennej. Zamiast tego musimy go zainicjować za pomocą konstruktora klasy. Jest to przydatne w przypadku, gdy użytkownik posiada jakieś dane, których inni nie mogą zmieniać, np. numer PAN. Rozważ następujący przykład:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Więcej szczegółów.

94) Czy możemy zainicjować ostatnią pustą zmienną?

Tak, jeśli nie jest statyczny, możemy go zainicjować w konstruktorze. Jeśli jest to statyczna, pusta zmienna końcowa, można ją zainicjować tylko w bloku statycznym. Więcej szczegółów.


95) Czy możesz zadeklarować metodę główną jako ostateczną?

Tak, możemy zadeklarować główną metodę jako public static final void main(String[] args){}.


96) Jaki jest wynik następującego programu Java?

 class Main { public static void main(String args[]){ final int i; i = 20; System.out.println(i); } } 

Wyjście

 20 

Wyjaśnienie

Ponieważ i jest pustą zmienną końcową. Można go zainicjować tylko raz. Zainicjalizowaliśmy go na 20. Dlatego wydrukowane zostanie 20.


97) Jaki jest wynik następującego programu Java?

 class Base { protected final void getInfo() { System.out.println('method of Base class'); } } public class Derived extends Base { protected final void getInfo() { System.out.println('method of Derived class'); } public static void main(String[] args) { Base obj = new Base(); obj.getInfo(); } } 

Wyjście

 Derived.java:11: error: getInfo() in Derived cannot override getInfo() in Base protected final void getInfo() ^ overridden method is final 1 error 

Wyjaśnienie

Metoda getDetails() jest ostateczna; dlatego nie można go zastąpić w podklasie.


98) Czy możemy zadeklarować konstruktor jako ostateczny?

Konstruktora nigdy nie można zadeklarować jako ostatecznego, ponieważ nigdy nie jest on dziedziczony. Konstruktory nie są zwykłymi metodami; dlatego nie ma sensu deklarować konstruktorów jako ostatecznych. Jeśli jednak spróbujesz to zrobić, kompilator zgłosi błąd.


99) Czy możemy zadeklarować interfejs jako ostateczny?

Nie, nie możemy zadeklarować interfejsu jako ostatecznego, ponieważ interfejs musi zostać zaimplementowany przez jakąś klasę, aby zapewnić jego definicję. Dlatego nie ma sensu finalizować interfejsu. Jeśli jednak spróbujesz to zrobić, kompilator wyświetli błąd.


100) Jaka jest różnica między metodą ostateczną a metodą abstrakcyjną?

Główna różnica między metodą final a metodą abstrakcyjną polega na tym, że metoda abstrakcyjna nie może być ostateczna, ponieważ musimy ją zastąpić w podklasie, aby podać jej definicję.