Hỏi đáp về IT
Mã xác nhận Thay đổi một
Ngô Quang Hải quanghaisoft@yahoo.com Bigdata engineering - Backend-IT - MWG

300 câu hỏi phỏng vấn về Java Core

Duyệt qua: 73
1) Java là gì?

Java là ngôn ngữ lập trình cấp cao, hướng đối tượng , mạnh mẽ, an toàn, không phụ thuộc vào nền tảng, hiệu suất cao, đa luồng và ngôn ngữ lập trình di động. Nó được phát triển bởi James Gosling vào tháng 6 năm 1991. Nó cũng có thể được gọi là nền tảng vì nó cung cấp JRE và API của riêng mình.


2) Sự khác biệt giữa C ++ và Java là gì?

Sự khác biệt giữa C ++ và Java được đưa ra trong bảng sau.

Chỉ số so sánh C ++ Java
Nền tảng độc lập C ++ phụ thuộc vào nền tảng. Java độc lập với nền tảng.
Chủ yếu được sử dụng cho C ++ chủ yếu được sử dụng để lập trình hệ thống. Java chủ yếu được sử dụng để lập trình ứng dụng. Nó được sử dụng rộng rãi trong các ứng dụng window, web, Enterprise và mobile.
Mục tiêu thiết kế C ++ được thiết kế để lập trình hệ thống và ứng dụng. Đó là một phần mở rộng của ngôn ngữ lập trình C . Java được thiết kế và tạo ra như một trình thông dịch cho các hệ thống in ấn nhưng sau đó được mở rộng như một máy tính mạng hỗ trợ. Nó được thiết kế với mục tiêu là dễ sử dụng và dễ tiếp cận với nhiều đối tượng hơn.
Đi đến C ++ hỗ trợ câu lệnh goto . Java không hỗ trợ câu lệnh goto.
Nhiều thừa kế C ++ hỗ trợ đa kế thừa. Java không hỗ trợ đa kế thừa thông qua lớp. Nó có thể đạt được bằng các giao diện trong java .
Người vận hành quá tải C ++ hỗ trợ nạp chồng toán tử . Java không hỗ trợ nạp chồng toán tử.
Con trỏ C ++ hỗ trợ con trỏ . Bạn có thể viết chương trình con trỏ bằng C ++. Java hỗ trợ con trỏ bên trong. Tuy nhiên, bạn không thể viết chương trình con trỏ trong java. Nó có nghĩa là java đã hạn chế hỗ trợ con trỏ trong Java.
Trình biên dịch và thông dịch viên C ++ chỉ sử dụng trình biên dịch. C ++ được biên dịch và chạy bằng trình biên dịch chuyển mã nguồn thành mã máy, vì vậy C ++ phụ thuộc vào nền tảng. Java sử dụng cả trình biên dịch và trình thông dịch. Mã nguồn Java được chuyển đổi thành mã bytecode tại thời điểm biên dịch. Trình thông dịch thực thi mã bytecode này trong thời gian chạy và tạo ra đầu ra. Java được hiểu đó là lý do tại sao nó độc lập với nền tảng.
Gọi theo giá trị và Gọi theo tham chiếu C ++ hỗ trợ cả gọi theo giá trị và gọi theo tham chiếu. Java chỉ hỗ trợ gọi theo giá trị. Không có cuộc gọi bằng tham chiếu trong java.
Cơ cấu và Liên minh C ++ hỗ trợ các cấu trúc và liên hiệp. Java không hỗ trợ cấu trúc và liên hiệp.
Hỗ trợ chuỗi C ++ không có hỗ trợ tích hợp cho các luồng. Nó dựa vào thư viện của bên thứ ba để hỗ trợ luồng. Java có hỗ trợ luồng tích hợp .
Nhận xét tài liệu C ++ không hỗ trợ bình luận tài liệu. Java hỗ trợ chú thích tài liệu (/ ** ... * /) để tạo tài liệu cho mã nguồn java.
Từ khóa ảo C ++ hỗ trợ từ khóa ảo để chúng ta có thể quyết định có ghi đè một hàm hay không. Java không có từ khóa ảo. Chúng tôi có thể ghi đè tất cả các phương thức không tĩnh theo mặc định. Nói cách khác, các phương thức không tĩnh là ảo theo mặc định.
ca phải trái dấu >>> C ++ không hỗ trợ toán tử >>>. Java hỗ trợ toán tử shift sang phải không dấu >>> điền số 0 ở đầu cho các số âm. Đối với các số dương, nó hoạt động giống như toán tử >>.
Cây thừa kế C ++ luôn tạo một cây kế thừa mới. Java luôn sử dụng một cây thừa kế đơn vì tất cả các lớp đều là con của lớp Đối tượng trong java. Lớp đối tượng là gốc của cây kế thừa trong java.
Phần cứng C ++ gần với phần cứng hơn. Java không tương tác nhiều với phần cứng.
Hướng đối tượng C ++ là một ngôn ngữ hướng đối tượng. Tuy nhiên, trong ngôn ngữ C, hệ thống phân cấp gốc đơn là không thể. Java cũng là một ngôn ngữ hướng đối tượng . Tuy nhiên, mọi thứ (trừ các kiểu cơ bản) đều là một đối tượng trong Java. Nó là một hệ thống phân cấp gốc duy nhất vì mọi thứ đều bắt nguồn từ java.lang.Object.

3) Liệt kê các đặc điểm của ngôn ngữ Lập trình Java.

Có các tính năng sau trong Ngôn ngữ lập trình Java.

    • Đơn giản: Java rất dễ học. Cú pháp của Java dựa trên C ++ nên việc viết chương trình trong đó dễ dàng hơn.

 

    • Hướng đối tượng: Java tuân theo mô hình hướng đối tượng cho phép chúng ta duy trì mã của mình dưới dạng sự kết hợp của các loại đối tượng khác nhau kết hợp cả dữ liệu và hành vi.

 

    • Portable: Java hỗ trợ phương pháp đọc-một-lần-ghi-ở mọi nơi. Chúng ta có thể thực thi chương trình Java trên mọi máy. Chương trình Java (.java) được chuyển đổi thành bytecode (.class) có thể dễ dàng chạy trên mọi máy.

 

    • Nền tảng độc lập: Java là một ngôn ngữ lập trình độc lập với nền tảng. Nó khác với các ngôn ngữ lập trình khác như C và C ++ cần một nền tảng để thực thi. Java đi kèm với nền tảng mà mã của nó được thực thi. Java không phụ thuộc vào hệ điều hành được thực thi.

 

    • Bảo mật: Java được bảo mật vì nó không sử dụng con trỏ rõ ràng. Java cũng cung cấp khái niệm xử lý ByteCode và Exception giúp nó được bảo mật hơn.

 

    • Mạnh mẽ: Java là một ngôn ngữ lập trình mạnh mẽ vì nó sử dụng khả năng quản lý bộ nhớ mạnh mẽ. Các khái niệm như Tự động thu gom rác, Xử lý ngoại lệ, v.v. làm cho nó trở nên mạnh mẽ hơn.

 

    • Kiến trúc Trung lập: Java là kiến ​​trúc trung lập vì nó không phụ thuộc vào kiến ​​trúc. Trong C, kích thước của các kiểu dữ liệu có thể thay đổi theo kiến ​​trúc (32 bit hoặc 64 bit) không tồn tại trong Java.

 

    • Được thông dịch: Java sử dụng trình thông dịch Just-in-time (JIT) cùng với trình biên dịch để thực thi chương trình.

 

    • Hiệu suất cao: Java nhanh hơn so với các ngôn ngữ lập trình thông dịch truyền thống khác vì mã bytecode của Java "gần" với mã gốc. Nó vẫn chậm hơn một chút so với ngôn ngữ đã biên dịch (ví dụ: C ++).

 

    • Đa luồng: Chúng ta có thể viết các chương trình Java giải quyết nhiều tác vụ cùng một lúc bằng cách xác định nhiều luồng. Ưu điểm chính của đa luồng là nó không chiếm bộ nhớ cho mỗi luồng. Nó chia sẻ một vùng bộ nhớ chung. Chủ đề rất quan trọng đối với đa phương tiện, ứng dụng Web, v.v.

 

    • Phân tán: Java được phân phối vì nó tạo điều kiện cho người dùng tạo các ứng dụng phân tán trong Java. RMI và EJB được sử dụng để tạo các ứng dụng phân tán. Tính năng này của Java giúp chúng ta có thể truy cập tệp bằng cách gọi các phương thức từ bất kỳ máy nào trên internet.

 

    • Động: Java là một ngôn ngữ động. Nó hỗ trợ tải động các lớp. Nó có nghĩa là các lớp được tải theo yêu cầu. Nó cũng hỗ trợ các chức năng từ các ngôn ngữ mẹ đẻ của nó, tức là C và C ++.

 


4) Bạn hiểu gì về máy ảo Java?

Máy ảo Java là một máy ảo cho phép máy tính chạy chương trình Java. JVM hoạt động giống như một công cụ chạy thời gian gọi phương thức chính có trong mã Java. JVM là đặc tả phải được thực hiện trong hệ thống máy tính. Mã Java được JVM biên dịch để trở thành một Bytecode độc ​​lập với máy và gần với mã gốc.


5) Sự khác biệt giữa JDK, JRE và JVM là gì? JVM

JVM là từ viết tắt của Java Virtual Machine; nó là một máy trừu tượng cung cấp môi trường thời gian chạy mà mã bytecode của Java có thể được thực thi. Nó là một đặc tả chỉ định hoạt động của Máy ảo Java. Việc triển khai nó đã được cung cấp bởi Oracle và các công ty khác. Việc triển khai nó được gọi là JRE.

JVM có sẵn cho nhiều nền tảng phần cứng và phần mềm (vì vậy JVM phụ thuộc vào nền tảng). Nó là một cá thể thời gian chạy được tạo khi chúng ta chạy lớp Java. Có ba khái niệm về JVM: đặc tả, triển khai và thể hiện.

JRE

JRE là viết tắt của Java Runtime Environment. Đó là việc thực hiện JVM. Java Runtime Environment là một bộ công cụ phần mềm được sử dụng để phát triển các ứng dụng Java. Nó được sử dụng để cung cấp môi trường thời gian chạy. Đó là việc thực hiện JVM. Nó tồn tại về mặt vật lý. Nó chứa một bộ thư viện + các tệp khác mà JVM sử dụng trong thời gian chạy.

JDK

JDK là từ viết tắt của Java Development Kit. Nó là một môi trường phát triển phần mềm được sử dụng để phát triển các ứng dụng Java và applet. Nó tồn tại về mặt vật lý. Nó chứa các công cụ phát triển JRE +. JDK là một triển khai của bất kỳ một trong những Nền tảng Java nhất định dưới đây do Tập đoàn Oracle phát hành:

  • Nền tảng Java phiên bản tiêu chuẩn
  • Nền tảng Java phiên bản doanh nghiệp
  • Nền tảng Java phiên bản Micro

Thêm chi tiết.


6) Có bao nhiêu loại vùng nhớ được cấp phát bởi JVM?

Nhiều loại:

  1. Vùng (Phương thức) Lớp : Vùng Lớp lưu trữ các cấu trúc cho mỗi lớp như nhóm hằng số thời gian chạy, trường, dữ liệu phương thức và mã cho các phương thức.
  2. Heap: Là vùng dữ liệu thời gian chạy, trong đó bộ nhớ được cấp phát cho các đối tượng
  3. Stack: Java Stack lưu trữ các khung. Nó chứa các biến cục bộ và kết quả từng phần, đồng thời đóng một phần trong việc gọi và trả về phương thức. Mỗi luồng có một ngăn xếp JVM riêng, được tạo cùng lúc với luồng. Một khung mới được tạo mỗi khi một phương thức được gọi. Khung bị hủy khi lệnh gọi phương thức của nó hoàn tất.
  4. Thanh ghi bộ đếm chương trình: Thanh ghi PC (bộ đếm chương trình) chứa địa chỉ của lệnh máy ảo Java hiện đang được thực thi.
  5. Native Method Stack: Nó chứa tất cả các phương thức gốc được sử dụng trong ứng dụng.

Thêm chi tiết.


7) Trình biên dịch JIT là gì?

Trình biên dịch Just-In-Time (JIT): Nó được sử dụng để cải thiện hiệu suất. JIT biên dịch các phần của mã bytecode có chức năng tương tự tại cùng một thời điểm, và do đó làm giảm lượng thời gian cần thiết để biên dịch. Ở đây thuật ngữ “trình biên dịch” dùng để chỉ một trình dịch từ tập lệnh của máy ảo Java (JVM) sang tập lệnh của một CPU cụ thể.


8) Nền tảng là gì?

Nền tảng là môi trường phần cứng hoặc phần mềm trong đó một phần mềm được thực thi. Có hai loại nền tảng, dựa trên phần mềm và dựa trên phần cứng. Java cung cấp nền tảng dựa trên phần mềm.


9) Sự khác biệt chính giữa nền tảng Java và các nền tảng khác là gì?

Có những điểm khác biệt sau giữa nền tảng Java và các nền tảng khác.

  • Java là nền tảng dựa trên phần mềm trong khi các nền tảng khác có thể là nền tảng phần cứng hoặc nền tảng dựa trên phần mềm.
  • Java được thực thi trên đầu các nền tảng phần cứng khác trong khi các nền tảng khác chỉ có thể có các thành phần phần cứng.

10) Điều gì mang lại cho Java tính chất 'viết một lần và chạy mọi nơi'?

Mã bytecode. Trình biên dịch Java chuyển đổi các chương trình Java thành tệp lớp (Mã Byte) là ngôn ngữ trung gian giữa mã nguồn và mã máy. Bytecode này không dành riêng cho nền tảng và có thể được thực thi trên bất kỳ máy tính nào.


11) Trình tải lớp là gì?

Classloader là một hệ thống con của JVM được sử dụng để tải các tệp lớp. Bất cứ khi nào chúng ta chạy chương trình java, nó sẽ được tải trước bởi trình nạp lớp. Có ba bộ nạp lớp tích hợp trong Java.

  1. Bootstrap ClassLoader : Đây là trình nạp lớp đầu tiên, là siêu lớp của Trình tải lớp mở rộng. Nó tải tệp rt.jar chứa tất cả các tệp lớp của Java Standard Edition như lớp gói java.lang, lớp gói java.net, lớp gói java.util, lớp gói java.io, lớp gói java.sql, v.v.
  2. Extension ClassLoader : Đây là trình nạp lớp con của Bootstrap và trình nạp lớp cha của Trình tải lớp hệ thống. Nó tải các tệp jar nằm bên trong thư mục $ JAVA_HOME / jre / lib / ext .
  3. System / Application ClassLoader : Đây là trình tải lớp con của Trình tải lớp mở rộng. Nó tải các tệp lớp từ classpath. Theo mặc định, classpath được đặt thành thư mục hiện tại. Bạn có thể thay đổi classpath bằng cách sử dụng chuyển đổi "-cp" hoặc "-classpath". Nó còn được gọi là Trình tải lớp ứng dụng.

12) Tên tệp .java rỗng có phải là tên tệp nguồn hợp lệ không?

Có, Java chỉ cho phép lưu tệp java của chúng ta bằng .java , chúng ta cần biên dịch nó bằng javac .java và chạy bằng java classname Hãy lấy một ví dụ đơn giản:

 
  • // chỉ lưu bằng .java  
  • lớp  A {  
  • public static void  main (String args []) {    
  • System.out.println ( "Xin chào java" );  
  • }  
  • }  
  • // biên dịch bởi javac .java  
  • // chạy bởi java A  
  • biên dịch nó bằng javac .java

    chạy nó bằng java A


    13) Từ khóa delete, next, main, exit hay null trong java?

    Không.


    14) Nếu tôi không cung cấp bất kỳ đối số nào trên dòng lệnh, thì giá trị được lưu trữ trong mảng Chuỗi sẽ được truyền vào phương thức main () trống hay NULL?

    Nó trống, nhưng không rỗng.


    15) Điều gì sẽ xảy ra nếu tôi viết khoảng trống công cộng tĩnh thay vì khoảng trống công khai tĩnh?

    Chương trình biên dịch và chạy chính xác vì thứ tự của các chỉ định không quan trọng trong Java.


    16) Giá trị mặc định của các biến cục bộ là gì?

    Các biến cục bộ không được khởi tạo thành bất kỳ giá trị mặc định nào, không phải là nguyên thủy hay tham chiếu đối tượng.


    17) Các chỉ định truy cập khác nhau trong Java là gì?

    Trong Java, các chỉ định truy cập là các từ khóa được sử dụng để xác định phạm vi truy cập của phương thức, lớp hoặc một biến. Trong Java, có bốn chỉ định truy cập được đưa ra dưới đây.

    • Public Các lớp, phương thức hoặc biến được định nghĩa là public, có thể được truy cập bởi bất kỳ lớp hoặc phương thức nào.
    • Protected Protected có thể được truy cập bởi lớp của cùng một gói, hoặc bởi lớp con của lớp này, hoặc trong cùng một lớp.
    • Mặc định Mặc định chỉ có thể truy cập trong gói. Theo mặc định, tất cả các lớp, phương thức và biến đều có phạm vi mặc định.
    • Riêng tư Lớp private, các phương thức hoặc các biến được định nghĩa là private chỉ có thể được truy cập trong lớp.

    18) Mục đích của các phương thức và biến static là gì?

    Các phương thức hoặc biến được định nghĩa là static được chia sẻ giữa tất cả các đối tượng của lớp. Tĩnh là một phần của lớp chứ không phải của đối tượng. Các biến tĩnh được lưu trữ trong vùng lớp và chúng ta không cần tạo đối tượng để truy cập các biến đó. Do đó, static được sử dụng trong trường hợp chúng ta cần xác định các biến hoặc phương thức chung cho tất cả các đối tượng của lớp.

    Ví dụ: Trong lớp mô phỏng tập hợp các sinh viên trong một trường cao đẳng, tên của trường đó là thuộc tính chung cho tất cả các sinh viên. Do đó, tên trường đại học sẽ được định nghĩa là tĩnh .


    19) Ưu điểm của Gói trong Java là gì?

    Có nhiều ưu điểm khác nhau của việc xác định gói trong Java.

    • Các gói tránh đụng độ tên.
    • Gói cung cấp kiểm soát truy cập dễ dàng hơn.
    • Chúng ta cũng có thể có các lớp ẩn không được nhìn thấy bên ngoài và được gói sử dụng.
    • Dễ dàng xác định vị trí các lớp liên quan hơn.

    20) Kết quả của chương trình Java sau là gì?
     
  •  kiểm tra    lớp
  • {  
  •     public static void  main (String args [])     
  •     {  
  •         System.out.println ( 10  +  20  +  "Javatpoint" );   
  •         System.out.println ( "Javatpoint"  +  10  +  20 );  
  •     }  
  • }  
  • Đầu ra của đoạn mã trên sẽ là

    30Javatpoint
    Javatpoint1020
    

    Giải trình

    Trong trường hợp đầu tiên, 10 và 20 được coi là số và được thêm vào là 30. Bây giờ, tổng 30 của chúng được coi là chuỗi và được nối với chuỗi Javatpoint . Do đó, đầu ra sẽ là 30Javatpoint .

    Trong trường hợp thứ hai, chuỗi Javatpoint được nối với 10 thành chuỗi Javatpoint10 sau đó sẽ được nối với 20 thành Javatpoint1020 .


    21) Đầu ra của chương trình Java sau là gì?
     
  •  kiểm tra    lớp
  • {  
  •     public static void  main (String args [])     
  •     {  
  •         System.out.println ( 10  *  20  +  "Javatpoint" );   
  •         System.out.println ( "Javatpoint"  +  10  *  20 );  
  •     }  
  • }  
  • Đầu ra của đoạn mã trên sẽ là

    200Javatpoint
    Javatpoint200
    

    Giải trình

    Trong trường hợp đầu tiên, các số 10 và 20 sẽ được nhân đầu tiên và sau đó kết quả 200 được coi là chuỗi và được nối với chuỗi Javatpoint để tạo ra đầu ra 200Javatpoint .

    Trong trường hợp thứ hai, các số 10 và 20 sẽ được nhân trước với 200 vì mức độ ưu tiên của phép nhân cao hơn phép cộng. Kết quả 200 sẽ được coi là chuỗi và được nối với chuỗi Javatpoint để tạo ra đầu ra là Javatpoint200 .


    22) Kết quả của chương trình Java sau là gì?
     
  •  kiểm tra    lớp
  • {  
  •     public static void  main (String args [])     
  •     {  
  •         for int  i = ;  ; i ++)   
  •         {  
  •             System.out.println ( "Xin chào Javatpoint" );  
  •         }  
  •     }  
  • }  
  • Đoạn mã trên sẽ đưa ra lỗi thời gian biên dịch vì vòng lặp for yêu cầu giá trị boolean trong phần thứ hai và chúng tôi đang cung cấp một giá trị số nguyên, tức là, 0.


    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn OOPs ban đầu

    Có hơn 50 câu hỏi phỏng vấn OOP (Lập trình hướng đối tượng và Hệ thống). Tuy nhiên, chúng đã được phân loại thành nhiều phần như câu hỏi phỏng vấn xây dựng, câu hỏi phỏng vấn tĩnh, câu hỏi phỏng vấn kế thừa, câu hỏi phỏng vấn trừu tượng, câu hỏi phỏng vấn đa hình, v.v. để bạn hiểu rõ hơn.


    23) Mô hình hướng đối tượng là gì?

    Nó là một mô hình lập trình dựa trên các đối tượng có dữ liệu và phương thức được định nghĩa trong lớp mà nó thuộc về. Mô hình hướng đối tượng nhằm mục đích kết hợp các lợi thế của mô đun và khả năng tái sử dụng. Đối tượng là các thể hiện của các lớp tương tác với nhau để thiết kế các ứng dụng và chương trình. Có các tính năng sau của mô hình hướng đối tượng.

    • Thực hiện theo cách tiếp cận từ dưới lên trong thiết kế chương trình.
    • Tập trung vào dữ liệu với các phương pháp hoạt động dựa trên dữ liệu của đối tượng
    • Bao gồm khái niệm như Đóng gói và trừu tượng, ẩn sự phức tạp khỏi người dùng và chỉ hiển thị chức năng.
    • Triển khai phương pháp thời gian thực như kế thừa, trừu tượng, v.v.
    • Các ví dụ của mô hình hướng đối tượng là C ++, Simula, Smalltalk, Python, C #, v.v.

    24) Đối tượng là gì?

    Đối tượng là thực thể thời gian thực có một số trạng thái và hành vi. Trong Java, Object là một thể hiện của lớp có các biến thể hiện là trạng thái của đối tượng và các phương thức là hành vi của đối tượng. Đối tượng của một lớp có thể được tạo bằng cách sử dụng từ khóa mới .


    25) Sự khác biệt giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ lập trình dựa trên đối tượng là gì?

    Có những khác biệt cơ bản sau đây giữa ngôn ngữ hướng đối tượng và ngôn ngữ dựa trên đối tượng.

    • Ngôn ngữ hướng đối tượng tuân theo tất cả các khái niệm về OOP trong khi ngôn ngữ dựa trên đối tượng không tuân theo tất cả các khái niệm của OOP như kế thừa và đa hình.
    • Ngôn ngữ hướng đối tượng không có đối tượng sẵn có trong khi ngôn ngữ dựa trên đối tượng có đối tượng sẵn có, ví dụ: JavaScript có đối tượng cửa sổ.
    • Ví dụ về lập trình hướng đối tượng là Java, C #, Smalltalk, v.v. trong khi ví dụ về ngôn ngữ dựa trên đối tượng là JavaScript, VBScript, v.v.

    26) Giá trị ban đầu của một tham chiếu đối tượng được định nghĩa là một biến thể hiện là gì?

    Tất cả các tham chiếu đối tượng được khởi tạo thành null trong Java.


    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn về khối lệnh

    27) Hàm tạo là gì?

    Hàm tạo có thể được định nghĩa là loại phương thức đặc biệt được sử dụng để khởi tạo trạng thái của một đối tượng. Nó được gọi khi lớp được khởi tạo, và bộ nhớ được cấp phát cho đối tượng. Mỗi khi một đối tượng được tạo bằng từ khóa new , hàm tạo mặc định của lớp sẽ được gọi. Tên của phương thức khởi tạo phải giống với tên lớp. Hàm tạo không được có kiểu trả về rõ ràng.

    Thêm chi tiết.


    28) Có bao nhiêu loại hàm tạo được sử dụng trong Java?

    Dựa trên các tham số được truyền trong hàm tạo, có hai loại hàm tạo trong Java.

    • Hàm tạo mặc định : hàm tạo mặc định là hàm không chấp nhận bất kỳ giá trị nào. Hàm tạo mặc định chủ yếu được sử dụng để khởi tạo biến cá thể với các giá trị mặc định. Nó cũng có thể được sử dụng để thực hiện một số tác vụ hữu ích trong việc tạo đối tượng. Một hàm tạo mặc định được trình biên dịch gọi ngầm nếu không có hàm tạo nào được định nghĩa trong lớp.
    • Phương thức khởi tạo tham số hóa: Phương thức khởi tạo được tham số hóa là phương thức có thể khởi tạo các biến thể hiện với các giá trị đã cho. Nói cách khác, chúng ta có thể nói rằng các hàm tạo có thể chấp nhận các đối số được gọi là các hàm tạo tham số hóa.

    Trình tạo Java


    29) Mục đích của một hàm tạo mặc định là gì?

    Mục đích của hàm tạo mặc định là gán giá trị mặc định cho các đối tượng. Trình biên dịch java tạo ngầm định một hàm tạo mặc định nếu không có hàm tạo nào trong lớp.

     
  • sinh viên  lớp3 {  
  • int  id;  
  • Tên chuỗi;  
  •   
  • void  display () {System.out.println (id + "" + tên);}  
  •   
  • public static void  main (String args []) {    
  • Student3 s1 = new  Student3 ();  
  • Student3 s2 = new  Student3 ();  
  • s1.display ();  
  • s2.display ();  
  • }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra:

    0 rỗng
    0 rỗng
    

    Giải thích: Trong lớp trên, bạn không tạo bất kỳ hàm tạo nào, vì vậy trình biên dịch cung cấp cho bạn một hàm tạo mặc định. Ở đây giá trị 0 và null được cung cấp bởi hàm tạo mặc định.

    Hàm tạo mặc định của Java
    Thêm chi tiết.


    30) Hàm tạo có trả về bất kỳ giá trị nào không?

    Trả lời: có, Hàm tạo hoàn toàn trả về thể hiện hiện tại của lớp (Bạn không thể sử dụng kiểu trả về rõ ràng với hàm tạo). Thêm chi tiết.


    31) Hàm tạo có được kế thừa không?

    Không, Hàm tạo không được kế thừa.


    32) Bạn có thể tạo một hàm tạo cuối cùng không?

    Không, hàm tạo không thể là cuối cùng.


    33) Chúng ta có thể nạp chồng các hàm tạo không?

    Có, các hàm tạo có thể được nạp chồng bằng cách thay đổi số lượng đối số được chấp nhận bởi hàm tạo hoặc bằng cách thay đổi kiểu dữ liệu của các tham số. Hãy xem xét ví dụ sau.

     
  •  kiểm tra    lớp
  • {  
  •     int  i;   
  •      Kiểm tra công khai int  k)  
  •     {  
  •         i = k;  
  •     }  
  •      Kiểm tra công khai int  k,  int  m)  
  •     {  
  •         System.out.println ( "Xin chào, tôi đang gán giá trị max (k, m) cho i" );  
  •         nếu (k> m)  
  •         {  
  •             i = k;   
  •         }  
  •         khác   
  •         {  
  •             i = m;  
  •         }  
  •     }  
  • }  
  • lớp công cộng  Chính    
  • {  
  •     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);  
  •     }  
  • }  
  •       
  • Trong chương trình trên, Kiểm tra hàm tạo được nạp chồng với một hàm tạo khác. Trong lần gọi hàm tạo đầu tiên, Hàm tạo với một đối số được gọi và i sẽ được khởi tạo với giá trị 10. Tuy nhiên, trong lần gọi hàm tạo thứ hai, Hàm tạo với 2 đối số được gọi và i sẽ được khởi tạo với giá trị 15.


    34) Bạn hiểu gì về hàm tạo sao chép trong Java?

    Không có hàm tạo bản sao trong java. Tuy nhiên, chúng ta có thể sao chép các giá trị từ đối tượng này sang đối tượng khác giống như sao chép hàm tạo trong C ++.

    Có nhiều cách để sao chép các giá trị của một đối tượng này vào một đối tượng khác trong java. Họ đang:

    • Bởi nhà xây dựng
    • Bằng cách gán các giá trị của một đối tượng này vào một đối tượng khác
    • Bằng phương thức clone () của lớp Object

    Trong ví dụ này, chúng ta sẽ sao chép các giá trị của một đối tượng này vào một đối tượng khác bằng cách sử dụng hàm tạo java.

     
  • // Chương trình Java để khởi tạo các giá trị từ đối tượng này sang đối tượng khác  
  • sinh viên lớp  6 {  
  •     int  id;  
  •     Tên chuỗi;  
  •     // hàm tạo để khởi tạo số nguyên và chuỗi  
  •     Student6 ( int  i, String n) {  
  •     id = i;  
  •     tên = n;  
  •     }  
  •     // hàm tạo để khởi tạo một đối tượng khác  
  •     Student6 (Student6 s) {  
  •     id = s.id;  
  •     tên = s.name;  
  •     }  
  •     void  display () {System.out.println (id + "" + tên);}  
  •    
  •     public static void  main (String args []) {    
  •     Student6 s1 =  new  Student6 ( 111 "Karan" );  
  •     Student6 s2 =  new  Student6 (s1);  
  •     s1.display ();  
  •     s2.display ();  
  •    }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra:

    111 Karan
    111 Karan
    

    35) Sự khác nhau giữa hàm tạo và phương thức là gì?

    Có nhiều điểm khác biệt giữa hàm tạo và phương thức. Chúng được đưa ra dưới đây.

    Java Constructor Phương pháp Java
    Một hàm tạo được sử dụng để khởi tạo trạng thái của một đối tượng. Một phương thức được sử dụng để hiển thị hành vi của một đối tượng.
    Một hàm tạo không được có kiểu trả về. Một phương thức phải có kiểu trả về.
    Hàm tạo được gọi ngầm. Phương thức được gọi một cách rõ ràng.
    Trình biên dịch Java cung cấp một hàm tạo mặc định nếu bạn không có bất kỳ hàm tạo nào trong một lớp. Phương thức này không được cung cấp bởi trình biên dịch trong mọi trường hợp.
    Tên phương thức khởi tạo phải giống với tên lớp. Tên phương thức có thể giống hoặc không giống với tên lớp.


    Java Constructors so với các phương thức


    36) Kết quả của chương trình Java sau là gì?
     
  •  Kiểm tra    lớp công khai 
  • {  
  •     Kiểm tra ( int  a,  int  b)  
  •     {  
  •         System.out.println ( "a =" + a + "b =" + b);  
  •     }  
  •     Kiểm tra ( int  a,  float  b)  
  •     {  
  •         System.out.println ( "a =" + a + "b =" + b);  
  •     }  
  •     public static void  main (String args [])    
  •     {  
  •         byte  a =  10 ;   
  •         byte  b =  15 ;  
  •         Kiểm tra thử nghiệm =  new  Test (a, b);  
  •     }  
  • }  
  • Kết quả của chương trình sau là:

    a = 10 b = 15
    

    Ở đây, kiểu dữ liệu của các biến a và b, tức là byte được thăng cấp thành int, và hàm tạo tham số hóa đầu tiên với hai tham số nguyên được gọi.


    37) Đầu ra của chương trình Java sau là gì?
     
  •  kiểm tra    lớp
  • {  
  •     int  i;   
  • }  
  • lớp công cộng  Chính    
  • {  
  •     public static void  main (String args [])     
  •     {  
  •         Kiểm tra thử nghiệm =  new  Test ();   
  •         System.out.println (test.i);  
  •     }  
  • }  
  • Đầu ra của chương trình là 0 vì biến i được khởi tạo bằng 0 bên trong. Như chúng ta biết rằng một hàm tạo mặc định được gọi ngầm nếu không có hàm tạo nào trong lớp, biến i được khởi tạo bằng 0 vì không có hàm tạo nào trong lớp.


    38) Kết quả của chương trình Java sau là gì?
     
  •  kiểm tra    lớp
  • {  
  •     int  test_a, test_b;  
  •     Kiểm tra ( int  a,  int  b)   
  •     {  
  •     test_a = a;   
  •     test_b = b;   
  •     }  
  •     public static void  main (String args [])     
  •     {  
  •         Kiểm tra thử nghiệm =  new  Test ();   
  •         System.out.println (test.test_a + "" + test.test_b);  
  •     }  
  • }  
  • Có một lỗi trình biên dịch trong chương trình vì có một lệnh gọi đến hàm tạo mặc định trong phương thức main không có trong lớp. Tuy nhiên, chỉ có một hàm tạo được tham số hóa trong Kiểm thử lớp. Do đó, không có hàm tạo mặc định nào được gọi ngầm bởi hàm tạo.


    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn từ khóa tĩnh

    39) Biến tĩnh là gì?

    Biến static được sử dụng để chỉ thuộc tính chung của tất cả các đối tượng (không phải là duy nhất cho từng đối tượng), ví dụ: Tên công ty của nhân viên, tên sinh viên đại học, v.v. Biến static chỉ nhận bộ nhớ một lần trong vùng lớp tại thời gian xếp lớp. Sử dụng một biến tĩnh làm cho chương trình của bạn hiệu quả hơn về bộ nhớ (nó tiết kiệm bộ nhớ). Biến static thuộc về lớp chứ không phải đối tượng.

     
  • // Chương trình của biến tĩnh  
  •   
  • sinh viên  lớp8 {  
  •    int  rollno;  
  •    Tên chuỗi;  
  •    static  String college = "ITS" ;  
  •      
  •    Student8 ( int  r, String n) {  
  •    rollno = r;  
  •    tên = n;  
  •    }  
  •  void  display () {System.out.println (rollno + "" + tên + "" + đại học);}  
  •   
  •  public static void  main (String args []) {    
  •  Student8 s1 =  new  Student8 ( 111 "Karan" );  
  •  Student8 s2 =  new  Student8 ( 222 "Aryan" );  
  •    
  •  s1.display ();  
  •  s2.display ();  
  •  }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra: 111 Karan ITS
           Chương 222 Aryan ITS
    

    Biến tĩnh
    Thêm chi tiết.


    40) Phương thức tĩnh là gì?
    • Một phương thức tĩnh thuộc về lớp chứ không phải đối tượng.
    • Không cần tạo đối tượng để gọi các phương thức tĩnh.
    • Một phương thức static có thể truy cập và thay đổi giá trị của biến static.

    Thêm chi tiết.


    41) Các hạn chế được áp dụng cho các phương thức tĩnh Java là gì?

    Hai hạn chế chính được áp dụng cho các phương thức tĩnh.

    • Phương thức tĩnh không thể sử dụng thành viên dữ liệu không tĩnh hoặc gọi phương thức không tĩnh trực tiếp.
    • this và super không thể được sử dụng trong ngữ cảnh tĩnh vì chúng không phải là tĩnh.

    42) Tại sao phương thức chính là static?

    Vì đối tượng không bắt buộc phải gọi phương thức tĩnh. Nếu chúng ta đặt phương thức main là không tĩnh, thì JVM sẽ phải tạo đối tượng của nó trước và sau đó gọi phương thức main (), điều này sẽ dẫn đến việc cấp phát thêm bộ nhớ. Thêm chi tiết.


    43) Chúng ta có thể ghi đè các phương thức tĩnh không?

    Không, chúng tôi không thể ghi đè các phương thức tĩnh.

    44) Khối tĩnh là gì?

    Khối tĩnh được sử dụng để khởi tạo thành viên dữ liệu tĩnh. Nó được thực thi trước phương thức chính, tại thời điểm tải lớp.

     
  • lớp  A2 {  
  •   static {System.out.println ( "khối tĩnh được gọi" );}  
  •   public static void  main (String args []) {    
  •    System.out.println ( "Xin chào main" );  
  •   }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra: khối tĩnh được gọi
           Xin chào chính
    


    Thêm chi tiết.


    45) Chúng ta có thể thực thi một chương trình không có phương thức main () không?

    Trả lời) Có, một trong những cách để thực thi chương trình mà không có phương thức chính là sử dụng khối tĩnh. Thêm chi tiết.


    46) Điều gì sẽ xảy ra nếu công cụ sửa đổi tĩnh bị xóa khỏi chữ ký của phương thức chính?

    Các biên dịch chương trình. Tuy nhiên, trong thời gian chạy, Nó ném ra một lỗi "NoSuchMethodError."


    47) Sự khác biệt giữa phương thức static (lớp) và phương thức thể hiện là gì?
    phương thức tĩnh hoặc lớp phương pháp phiên bản
    1) Một phương thức được khai báo là tĩnh được gọi là phương thức tĩnh. Một phương thức không được khai báo là static được gọi là phương thức instance.
    2) Chúng ta không cần tạo các đối tượng để gọi các phương thức tĩnh. Đối tượng được yêu cầu để gọi các phương thức thể hiện.
    3) Các thành viên không tĩnh (thể hiện) không thể được truy cập trực tiếp trong ngữ cảnh tĩnh (phương thức tĩnh, khối tĩnh và lớp lồng nhau tĩnh). Cả hai biến tĩnh và biến không tĩnh đều có thể được truy cập trong các phương thức thể hiện.
    4) Ví dụ: public static int cube (int n) {return n * n * n;} Ví dụ: public void msg () {...}.

    48) Chúng ta có thể làm cho các hàm tạo tĩnh không?

    Như chúng ta biết rằng ngữ cảnh tĩnh (phương thức, khối hoặc biến) thuộc về lớp, không phải đối tượng. Vì các hàm tạo chỉ được gọi khi đối tượng được tạo ra, nên không có nghĩa là làm cho các hàm tạo tĩnh. Tuy nhiên, nếu bạn cố gắng làm như vậy, trình biên dịch sẽ hiển thị lỗi trình biên dịch.


    49) Chúng ta có thể làm cho các phương thức trừu tượng tĩnh trong Java không?

    Trong Java, nếu chúng ta đặt các phương thức trừu tượng là tĩnh, Nó sẽ trở thành một phần của lớp và chúng ta có thể gọi trực tiếp nó là không cần thiết. Việc gọi một phương thức không xác định là hoàn toàn vô dụng do đó nó không được phép.


    50) Chúng ta có thể khai báo các biến và phương thức tĩnh trong một lớp trừu tượng không?

    Có, chúng ta có thể khai báo các biến và phương thức tĩnh trong một phương thức trừu tượng. Như chúng ta biết rằng không có yêu cầu bắt đối tượng phải truy cập ngữ cảnh tĩnh, do đó, chúng ta có thể truy cập ngữ cảnh tĩnh được khai báo bên trong lớp trừu tượng bằng cách sử dụng tên của lớp trừu tượng. Hãy xem xét ví dụ sau.

     
  •  Kiểm tra   lớp trừu tượng 
  • {  
  •     int tĩnh  i =  102 ;   
  •     static void  TestMethod ()   
  •     {  
  •         System.out.println ( "chào !! Tôi giỏi !!" );  
  •     }  
  • }  
  • Lớp công khai  TestClass  mở rộng  Thử nghiệm    
  • {  
  •     public static void  main (String args [])    
  •     {  
  •         Test.TestMethod ();  
  •         System.out.println ( "i =" + Test.i);  
  •     }  
  • }  
  • Đầu ra

    Chào !! Tôi tốt !!
    tôi = 102
    

    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn người thừa kế

    51) Từ khóa này trong java là gì?

    Các này từ khóa là một biến tham chiếu đề cập đến đối tượng hiện hành. Có nhiều cách sử dụng từ khóa này trong Java. Nó có thể được sử dụng để tham chiếu đến các thuộc tính của lớp hiện tại như phương thức thể hiện, biến, hàm tạo, v.v. Nó cũng có thể được truyền như một đối số vào các phương thức hoặc hàm tạo. Nó cũng có thể được trả về từ phương thức dưới dạng cá thể lớp hiện tại.

    java từ khóa này
    Thêm chi tiết.


    52) Công dụng chính của từ khóa này là gì?

    Có những cách sử dụng sau đây của từ khóa này .

    • điều này có thể được sử dụng để tham chiếu đến biến cá thể lớp hiện tại.
    • điều này có thể được sử dụng để gọi phương thức lớp hiện tại (ngầm định)
    • this () có thể được sử dụng để gọi phương thức khởi tạo của lớp hiện tại.
    • điều này có thể được chuyển như một đối số trong lệnh gọi phương thức.
    •  
    • điều này có thể được chuyển như một đối số trong lời gọi hàm tạo.
    • điều này có thể được sử dụng để trả về cá thể lớp hiện tại từ phương thức.

    53) Chúng ta có thể gán tham chiếu cho biến này không?

    Không, điều này không thể được gán cho bất kỳ giá trị nào vì nó luôn trỏ đến đối tượng lớp hiện tại và đây là tham chiếu cuối cùng trong Java. Tuy nhiên, nếu chúng tôi cố gắng làm như vậy, lỗi trình biên dịch sẽ được hiển thị. Hãy xem xét ví dụ sau.

     
  •  Kiểm tra   lớp công khai 
  • {  
  •      Kiểm tra công khai ()  
  •     {  
  •         this  =  null ;   
  •         System.out.println ( "Phương thức khởi tạo lớp thử nghiệm được gọi là" );  
  •     }  
  •     public static void  main (String args [])    
  •     {  
  •         Test t =  new  Test ();  
  •     }  
  • }  
  • Đầu ra

    Test.java:5: error: không thể gán giá trị cho biến cuối cùng này
            this = null; 
            ^
    1 lỗi
    

    54) Từ khóa này có thể được sử dụng để chỉ các thành viên tĩnh không?

    Có, Có thể sử dụng từ khóa này để chỉ các thành viên tĩnh vì đây chỉ là một biến tham chiếu tham chiếu đến đối tượng lớp hiện tại. Tuy nhiên, như chúng ta biết rằng, không cần thiết phải truy cập các biến tĩnh thông qua các đối tượng, do đó, không phải là cách tốt nhất để sử dụng điều này để tham chiếu các thành viên tĩnh. Hãy xem xét ví dụ sau.

     
  •  Kiểm tra    lớp công khai 
  • {  
  •     int tĩnh  i =  10 ;    
  •      Kiểm tra công khai ()  
  •     {  
  •         System.out.println ( this .i);      
  •     }  
  •     public static void  main (String args [])    
  •     {  
  •         Test t =  new  Test ();  
  •     }  
  • }  
  • Đầu ra

    10
    

    55) Làm thế nào có thể thực hiện chuỗi khởi tạo bằng cách sử dụng từ khóa này?

    Chuỗi xây dựng cho phép chúng ta gọi một hàm tạo từ một hàm tạo khác của lớp đối với đối tượng lớp hiện tại. Chúng ta có thể sử dụng từ khóa này để thực hiện chuỗi hàm tạo trong cùng một lớp. Hãy xem xét ví dụ sau minh họa cách chúng ta có thể sử dụng từ khóa này để đạt được chuỗi phương thức khởi tạo.

     
  •  nhân viên   hạng công cộng 
  • {  
  •     int  id, tuổi;   
  •     Tên chuỗi, địa chỉ;  
  •      Nhân viên công cộng int  age)  
  •     {  
  •         this .age = age;  
  •     }  
  •      Nhân viên công khai int  id,  int  age)  
  •     {  
  •         này (tuổi);  
  •         this .id = id;  
  •     }  
  •      Nhân viên công khai int  id,  int  age, Tên chuỗi, Địa chỉ chuỗi)  
  •     {  
  •         this (id, age);  
  •         this .name = name;   
  •         this .address = address;   
  •     }  
  •     public static void  main (String args [])    
  •     {  
  •         Employee emp =   Nhân viên mới 105 ,  22 ,  "Vikas" ,  "Delhi" );  
  •         System.out.println ( "ID:" + emp.id + "Tên:" + emp.name + "tuổi:" + emp.age + "địa chỉ:" + emp.address);  
  •     }  
  •       
  • }  
  • Đầu ra

    ID: 105 Tên: Vikas tuổi: 22 địa chỉ: Delhi
    

    56) Ưu điểm của việc truyền cái này vào một phương thức thay vì chính đối tượng lớp hiện tại là gì?

    Như chúng ta biết, điều này đề cập đến đối tượng lớp hiện tại, do đó, nó phải tương tự với đối tượng lớp hiện tại. Tuy nhiên, có thể có hai ưu điểm chính của việc chuyển điều này vào một phương thức thay vì đối tượng lớp hiện tại.

    • đây là một biến cuối cùng. Do đó, điều này không thể được gán cho bất kỳ giá trị mới nào trong khi đối tượng lớp hiện tại có thể không phải là cuối cùng và có thể được thay đổi.
    • điều này có thể được sử dụng trong khối được đồng bộ hóa.

    57) Thừa kế là gì?

    Kế thừa là một cơ chế mà một đối tượng có được tất cả các thuộc tính và hành vi của một đối tượng khác thuộc lớp khác. Nó được sử dụng để tái sử dụng mã và ghi đè phương thức. Ý tưởng đằng sau sự kế thừa trong Java là bạn có thể tạo các lớp mới được xây dựng dựa trên các lớp hiện có. Khi bạn kế thừa từ một lớp hiện có, bạn có thể sử dụng lại các phương thức và trường của lớp cha. Hơn nữa, bạn cũng có thể thêm các phương thức và trường mới trong lớp hiện tại của mình. Kế thừa đại diện cho mối quan hệ IS-A, còn được gọi là mối quan hệ cha-con.

    Có năm kiểu kế thừa trong Java.

    • Kế thừa mức đơn
    • Kế thừa đa cấp
    • Nhiều người thừa kế
    • Kế thừa thứ bậc
    • Thừa kế lai

    Đa kế thừa không được hỗ trợ trong Java thông qua lớp.

    Thêm chi tiết.


    58) Tại sao Kế thừa được sử dụng trong Java?

    Có nhiều lợi ích khác nhau của việc sử dụng kế thừa trong Java được đưa ra dưới đây.

    • Kế thừa cung cấp khả năng tái sử dụng mã. Lớp dẫn xuất không cần định nghĩa lại phương thức của lớp cơ sở trừ khi nó cần cung cấp cách triển khai cụ thể của phương thức.
    • Đa hình thời gian chạy không thể đạt được nếu không sử dụng tính năng kế thừa.
    • Chúng ta có thể mô phỏng sự kế thừa của các lớp với các đối tượng thời gian thực để làm cho các OOP thực tế hơn.
    • Kế thừa cung cấp ẩn dữ liệu. Lớp cơ sở có thể ẩn một số dữ liệu khỏi lớp dẫn xuất bằng cách đặt nó ở chế độ riêng tư.
    • Việc ghi đè phương thức không thể đạt được nếu không có tính kế thừa. Bằng cách ghi đè phương thức, chúng ta có thể đưa ra một triển khai cụ thể của một số phương thức cơ bản được chứa bởi lớp cơ sở.

    59) Lớp nào là lớp cha của tất cả các lớp?

    Lớp đối tượng là lớp cha của tất cả các lớp khác trong Java.


    60) Tại sao đa kế thừa không được hỗ trợ trong java?

    Để giảm độ phức tạp và đơn giản hóa ngôn ngữ, java không hỗ trợ đa kế thừa. Hãy xem xét một kịch bản trong đó A, B và C là ba lớp. Lớp C kế thừa các lớp A và B. Nếu các lớp A và B có cùng một phương thức và bạn gọi nó từ đối tượng lớp con, sẽ có sự mơ hồ khi gọi phương thức của lớp A hoặc B.

    Vì lỗi thời gian biên dịch tốt hơn lỗi thời gian chạy, Java hiển thị lỗi thời gian biên dịch nếu bạn kế thừa 2 lớp. Vì vậy, cho dù bạn có cùng một phương pháp hay khác nhau, sẽ có một lỗi thời gian biên dịch.

     
  • lớp  A {  
  • void  msg () {System.out.println ( "Xin chào" );}  
  • }  
  • lớp  B {  
  • void  msg () {System.out.println ( "Chào mừng" );}  
  • }  
  • lớp  C  mở rộng  A, B { // giả sử nếu nó là  
  •    
  •  Public Static  void  main (String args []) {  
  •    C obj = new  C ();  
  •    obj.msg (); // Bây giờ phương thức msg () nào sẽ được gọi?  
  • }  
  • }  
  • Kiểm tra nó ngay bây giờ

     Lỗi thời gian biên dịch
    

    61) Tập hợp là gì?

    Tổng hợp có thể được định nghĩa là mối quan hệ giữa hai lớp trong đó lớp tổng hợp chứa một tham chiếu đến lớp mà nó sở hữu. Tổng hợp được mô tả tốt nhất là một mối quan hệ có-một . Ví dụ: Lớp tổng hợp Nhân viên có các trường khác nhau như tuổi, tên và lương cũng chứa một đối tượng của Lớp Địa chỉ có các trường khác nhau như Dòng địa chỉ 1, Thành phố, Tiểu bang và mã pin. Nói cách khác, chúng ta có thể nói rằng (lớp) Employee có một đối tượng là lớp Address. Hãy xem xét ví dụ sau.

    Address.java

     
  •  Địa chỉ lớp công khai {   
  • Chuỗi thành phố, tiểu bang, quốc gia;  
  •   
  •  Địa chỉ công cộng (Thành phố chuỗi, Trạng thái chuỗi, Quốc gia chuỗi) {  
  •     this .city = thành phố;  
  •     this .state = trạng thái;  
  •     this .country = country;  
  • }  
  •   
  • }  
  • Employee.java

     
  • lớp công khai  Emp {   
  • int  id;  
  • Tên chuỗi;  
  • Địa chỉ địa chỉ;  
  •   
  • public  Emp ( int  id, String name, Address address) {  
  •     this .id = id;  
  •     this .name = name;  
  •     this .address = address;  
  • }  
  •   
  • void  display () {  
  • System.out.println (id + "" + tên);  
  • System.out.println (address.city + "" + address.state + "" + address.country);  
  • }  
  •   
  • public static void  main (String [] args) {    
  • Địa chỉ address1 = new  Address ( "gzb" "UP" "india" );  
  • Địa chỉ address2 = new  Address ( "gno" "UP" "india" );  
  •   
  • Emp e = new  Emp ( 111 "varun" , address1);  
  • Emp e2 = new  Emp ( 112 "arun" , address2);  
  •       
  • e.display ();  
  • e2.display ();  
  •       
  • }  
  • }  
  • Đầu ra

    111 varun
    gzb UP ấn độ
    112 arun
    gno UP ấn độ 
    

    62) Thành phần là gì?

    Giữ tham chiếu của một lớp trong một số lớp khác được gọi là thành phần. Khi một đối tượng chứa đối tượng kia, nếu đối tượng được chứa không thể tồn tại mà không có sự tồn tại của đối tượng chứa, thì nó được gọi là thành phần. Nói cách khác, chúng ta có thể nói rằng bố cục là trường hợp tổng hợp cụ thể thể hiện mối quan hệ chặt chẽ hơn giữa hai đối tượng. Ví dụ: Một lớp học chứa các học sinh. Một sinh viên không thể tồn tại nếu không có một lớp học. Tồn tại thành phần giữa lớp và học sinh.


    63) Sự khác nhau giữa tập hợp và thành phần là gì?

    Tổng thể đại diện cho mối quan hệ yếu trong khi thành phần đại diện cho mối quan hệ mạnh mẽ. Ví dụ, xe đạp có một chỉ số (tổng hợp), nhưng xe đạp có một động cơ (thành phần).


    64) Tại sao Java không hỗ trợ con trỏ?

    Con trỏ là một biến tham chiếu đến địa chỉ bộ nhớ. Chúng không được sử dụng trong Java vì chúng không an toàn (không bảo mật) và phức tạp để hiểu.


    65) Super trong java là gì?

    Các siêu từ khóa trong Java là một biến tham chiếu được sử dụng để tham khảo các đối tượng tầng lớp phụ huynh ngay lập tức. Bất cứ khi nào bạn tạo thể hiện của lớp con, một thể hiện của lớp cha được tạo ngầm định và được tham chiếu bởi biến siêu tham chiếu. Siêu () được gọi ngầm trong hàm tạo lớp bởi trình biên dịch nếu không có siêu hoặc cái này.

     
  • lớp  động vật {  
  • Animal () {System.out.println ( "động vật được tạo" );}  
  • }  
  • lớp  Chó  mở rộng  Động vật {  
  • Chó(){  
  • System.out.println ( "con chó được tạo" );  
  • }  
  • }  
  • lớp  TestSuper4 {  
  • public static void  main (String args []) {    
  • Dog d = new  Dog ();  
  • }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra:

    động vật được tạo ra
    con chó được tạo ra
    

    Thêm chi tiết.


    66) Làm thế nào có thể thực hiện chuỗi khởi tạo bằng cách sử dụng từ khóa super?

     

     
  • lớp  Person  
  • {  
  •     Tên chuỗi, địa chỉ;   
  •      tuổi int ;  
  •     Public  Person ( int  age, String name, String address)  
  •     {  
  •         this .age = age;  
  •         this .name = name;  
  •         this .address = address;  
  •     }  
  • }  
  • lớp  Nhân viên  mở rộng  Người   
  • {  
  •      lương thả nổi ;  
  •      Nhân viên công khai (  tuổi int , Tên chuỗi, Địa chỉ chuỗi,   lương float )  
  •     {  
  •         super (tuổi, tên, địa chỉ);  
  •         this .salary = tiền lương;  
  •     }  
  • }  
  •  Kiểm tra    lớp công khai 
  • {  
  •     public static void  main (String args [])    
  •     {  
  •         Nhân viên e =   Nhân viên mới 22 ,  "Mukesh" ,  "Delhi" ,  90000 );  
  •         System.out.println ( "Tên:" + e.name + "Lương:" + e.salary + "Tuổi:" + e.age + "Địa chỉ:" + e.address);  
  •     }  
  • }  
  • Đầu ra

    Tên: Mukesh Lương: 90000.0 Tuổi: 22 Địa chỉ: Delhi
    

    67) Công dụng chính của từ khóa siêu là gì?

    Có những cách sử dụng sau đây của từ khóa siêu.

    • super có thể được sử dụng để tham chiếu đến biến cá thể lớp cha ngay lập tức.
    • super có thể được sử dụng để gọi phương thức của lớp cha ngay lập tức.
    • super () có thể được sử dụng để gọi phương thức khởi tạo lớp cha ngay lập tức.

    68) Sự khác biệt giữa từ khóa này và từ khóa siêu là gì?

    Có những khác biệt sau đây giữa từ khóa này và từ khóa siêu.

    • Từ khóa super luôn trỏ đến ngữ cảnh lớp cha trong khi từ khóa này luôn trỏ đến ngữ cảnh lớp hiện tại.
    • Từ khóa super chủ yếu được sử dụng để khởi tạo các biến lớp cơ sở bên trong hàm tạo lớp dẫn xuất trong khi từ khóa này chủ yếu được sử dụng để phân biệt giữa các biến cục bộ và biến thể hiện khi được truyền trong hàm tạo lớp.
    • Siêu và đây phải là câu lệnh đầu tiên bên trong hàm tạo nếu không trình biên dịch sẽ báo lỗi.

    69) Kết quả của chương trình Java sau là gì?
     
  • lớp  Person   
  • {  
  •     Public  Person ()   
  •     {  
  •         System.out.println ( "Hàm tạo lớp người được gọi là" );  
  •     }  
  • }  
  • giai cấp công cộng  Nhân viên  mở rộng  Người    
  • {  
  •      nhân viên công cộng ()   
  •     {  
  •         System.out.println ( "Hàm tạo lớp nhân viên được gọi" );  
  •     }  
  •     public static void  main (String args [])    
  •     {  
  •         Nhân viên e =   Nhân viên mới ();  
  •     }  
  • }  
  • Đầu ra

    Hàm tạo lớp người được gọi
    Hàm tạo lớp nhân viên được gọi
    

    Giải trình

    Siêu () được trình biên dịch gọi ngầm nếu không có super () hoặc this () được đưa vào một cách rõ ràng bên trong phương thức khởi tạo của lớp dẫn xuất. Do đó, trong trường hợp này, phương thức khởi tạo lớp Person được gọi đầu tiên và sau đó phương thức khởi tạo lớp Employee được gọi.


    70) Bạn có thể sử dụng this () và super () trong một hàm tạo không?

    Không, bởi vì this () và super () phải là câu lệnh đầu tiên trong hàm tạo lớp.

    Thí dụ:

     
  •  Kiểm tra lớp công khai {   
  •     Kiểm tra()  
  •      {  
  •          siêu ();   
  •          này ();  
  •          System.out.println ( "Đối tượng lớp thử nghiệm được tạo" );  
  •      }  
  •      public static void  main (String [] args) {    
  •      Test t =  new  Test ();  
  •      }  
  • }  
  • Đầu ra:

    Test.java:5: error: lệnh gọi này phải là câu lệnh đầu tiên trong hàm tạo
    

    71) Nhân bản đối tượng là gì?

    Nhân bản đối tượng được sử dụng để tạo bản sao chính xác của một đối tượng. Phương thức clone () của lớp Object được sử dụng để sao chép một đối tượng. Các java.lang.Cloneable giao diện phải được thực hiện bởi lớp có bản sao đối tượng chúng tôi muốn tạo. Nếu chúng ta không triển khai giao diện Cloneable, phương thức clone () tạo ra CloneNotSupportedException.

     
  •  Đối tượng được bảo vệ clone ()  ném  CloneNotSupportedException    
  •       
  • Thêm chi tiết.

     


    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn nạp chồng phương pháp

    72) Nạp chồng phương thức là gì?

    Nạp chồng phương thức là kỹ thuật đa hình cho phép chúng ta tạo nhiều phương thức có cùng tên nhưng khác chữ ký. Chúng ta có thể đạt được quá trình nạp chồng phương thức theo hai cách.

    • Thay đổi số lượng đối số
    • Thay đổi kiểu trả hàng

    Quá tải phương thức làm tăng khả năng đọc của chương trình. Quá trình nạp phương thức được thực hiện để tìm ra chương trình một cách nhanh chóng.

    Thêm chi tiết.


    73) Tại sao không thể nạp chồng phương thức bằng cách thay đổi kiểu trả về trong java?

    Trong Java, không thể nạp chồng phương thức bằng cách thay đổi kiểu trả về của chương trình do để tránh sự mơ hồ.

     
  •  Adder lớp {  
  • static int  add ( int  a, int  b) { return  a + b;}   
  • static double  add ( int  a, int  b) { return  a + b;}   
  • }  
  • lớp  TestOverloading3 {  
  • public static void  main (String [] args) {    
  • System.out.println (Adder.add ( 11 11 )); // sự mơ hồ  
  • }}  
  • Kiểm tra nó ngay bây giờ

    Đầu ra:

    Lỗi thời gian biên dịch: phương thức add (int, int) đã được xác định trong class Adder
    

    Thêm chi tiết.


    74) Chúng ta có thể nạp chồng các phương thức bằng cách làm cho chúng tĩnh không?

    Không, Chúng ta không thể quá tải các phương thức bằng cách chỉ áp dụng từ khóa static cho chúng (số lượng tham số và kiểu như nhau). Hãy xem xét ví dụ sau.

     
  •  động vật   lớp công cộng 
  • {  
  •     void  tiêu thụ ( int  a)  
  •     {  
  •         System.out.println (a + "tiêu thụ !!" );  
  •     }  
  •     khoảng trống tĩnh  tiêu thụ ( int  a)   
  •     {  
  •         System.out.println ( "tiêu thụ tĩnh" + a);  
  •     }  
  •     public static void  main (String args [])    
  •     {  
  •         Animal a =  new  Animal ();  
  •         a.consume ( 10 );  
  •         Động vật.consume ( 20 );  
  •     }  
  • }    
  • Đầu ra

    Animal.java:7: error: method Consumer (int) đã được định nghĩa trong lớp Animal
        khoảng trống tĩnh tiêu thụ (int a)
                    ^
    Animal.java:15: error: không thể tham chiếu đến phương thức không tĩnh tiêu thụ (int) từ ngữ cảnh tĩnh
            Động vật.consume (20);
                  ^
    2 lỗi
    

    75) Chúng ta có thể nạp chồng phương thức main () không?

    Có, chúng ta có thể có bất kỳ số lượng phương thức chính nào trong chương trình Java bằng cách sử dụng nạp chồng phương thức.

    Thêm chi tiết.


    76) Nạp chồng phương thức với thăng hạng kiểu là gì?

    Quảng cáo theo loại là quá tải phương thức, chúng tôi có nghĩa là một loại dữ liệu có thể được thăng cấp ngầm cho một loại dữ liệu khác nếu không tìm thấy đối sánh chính xác.

    Nạp chồng phương pháp Java với quảng cáo kiểu

    Như được hiển thị trong sơ đồ trên, byte có thể được thăng cấp thành short, int, long, float hoặc double. Kiểu dữ liệu ngắn có thể được thăng cấp thành int, long, float hoặc double. Kiểu dữ liệu char có thể được thăng cấp thành int, long, float hoặc double, v.v. Hãy xem xét ví dụ sau.

     
  • lớp  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 ); // bây giờ int thứ hai sẽ được thăng cấp thành long  
  •   obj.sum ( 20 20 20 );  
  •   }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra

    40
    60
    

    77) Đầu ra của chương trình Java sau là gì?
     
  • Lớp học  OverloadingCalculation3 {    
  •   void  sum ( int  a, long  b) {System.out.println ( "một phương thức được gọi" );}    
  •   void  sum ( long  a, int  b) {System.out.println ( "phương thức b được gọi" );}    
  •     
  •   public static void  main (String args []) {      
  •   OverloadingCalculation3 obj = new  OverloadingCalculation3 ();    
  •   obj.sum ( 20 20 ); // bây giờ mơ hồ    
  •   }    
  • }    
  • Đầu ra

    OverloadingCalculation3.java:7: error: tham chiếu đến tổng là không rõ ràng
    obj.sum (20,20); // hiện không rõ ràng  
         ^ 
          cả hai phương thức sum (int, long) trong OverloadingCalculation3 
          và phương thức sum (long, int) trong trận đấu OverloadingCalculation3
    1 lỗi
    

    Giải trình

    Có hai phương thức được định nghĩa với cùng một tên, tức là tính tổng. Phương thức đầu tiên chấp nhận kiểu số nguyên và dài trong khi phương thức thứ hai chấp nhận kiểu số nguyên và dài. Tham số được truyền là a = 20, b = 20. Chúng ta không thể biết rằng phương thức nào sẽ được gọi vì không có sự phân biệt rõ ràng được đề cập giữa chữ số nguyên và chữ dài. Đây là trường hợp của sự mơ hồ. Do đó, trình biên dịch sẽ xuất hiện một lỗi.


    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn ghi đè phương pháp

    78) Ghi đè phương thức là gì:

    Nếu một lớp con cung cấp một triển khai cụ thể của một phương thức đã được cung cấp bởi lớp cha của nó, nó được gọi là Ghi đè phương thức. Nó được sử dụng để đa hình thời gian chạy và triển khai các phương thức giao diện.

    Quy tắc ghi đè phương thức

    • Phương thức phải có cùng tên như trong lớp cha.
    • Phương thức phải có cùng chữ ký như trong lớp cha.
    • Hai lớp phải có mối quan hệ IS-A giữa chúng.

    Thêm chi tiết.

     


    79) Chúng ta có thể ghi đè phương thức tĩnh không?

    Không, bạn không thể ghi đè phương thức tĩnh vì chúng là một phần của lớp, không phải đối tượng.


    80) Tại sao chúng ta không thể ghi đè phương thức tĩnh?

    Đó là bởi vì phương thức tĩnh là một phần của lớp và nó được liên kết với lớp trong khi phương thức thể hiện được liên kết với đối tượng và phương thức static lấy bộ nhớ trong vùng lớp và cá thể nhận bộ nhớ trong một đống.


    81) Chúng ta có thể ghi đè phương thức được nạp chồng không?

    Đúng.


    82) Sự khác biệt giữa phương pháp Ghi đè và Ghi đè.
    Quá tải phương thức Ghi đè phương pháp
    1) Nạp chồng phương thức làm tăng khả năng đọc của chương trình. Ghi đè phương thức cung cấp triển khai cụ thể của phương thức đã được cung cấp bởi lớp cha của nó.
    2) Quá tải phương thức xảy ra trong lớp. Ghi đè phương thức xảy ra trong hai lớp có mối quan hệ IS-A giữa chúng.
    3) Trong trường hợp này, các tham số phải khác. Trong trường hợp này, các thông số phải giống nhau.

    83) Chúng ta có thể ghi đè các phương thức private không?

    Không, chúng ta không thể ghi đè các phương thức private vì phạm vi của các phương thức private bị giới hạn trong lớp và chúng ta không thể truy cập chúng bên ngoài lớp.


    84) Chúng ta có thể thay đổi phạm vi của phương thức được ghi đè trong lớp con không?

    Có, chúng ta có thể thay đổi phạm vi của phương thức được ghi đè trong lớp con. Tuy nhiên, chúng ta phải lưu ý rằng chúng ta không thể giảm khả năng truy cập của phương thức. Điểm sau đây phải được lưu ý trong khi thay đổi khả năng truy cập của phương pháp.

    • Riêng tư có thể được thay đổi thành được bảo vệ, công khai hoặc mặc định.
    • Bảo vệ có thể được thay đổi thành công khai hoặc mặc định.
    • Mặc định có thể được thay đổi thành công khai.
    • Công chúng sẽ luôn là công khai.

    85) Chúng ta có thể sửa đổi mệnh đề ném của phương thức lớp cha trong khi ghi đè nó trong lớp con không?

    Có, chúng ta có thể sửa đổi mệnh đề ném của phương thức lớp cha trong khi ghi đè nó trong lớp con. Tuy nhiên, có một số quy tắc phải được tuân theo khi ghi đè trong trường hợp xử lý ngoại lệ.

    • Nếu phương thức lớp con không khai báo ngoại lệ, phương thức ghi đè lớp con không thể khai báo ngoại lệ đã kiểm tra, nhưng nó có thể khai báo ngoại lệ không được kiểm tra.
    • Nếu phương thức lớp con khai báo một ngoại lệ, phương thức ghi đè lớp con có thể khai báo giống nhau, ngoại lệ lớp con hoặc không có ngoại lệ nhưng không thể khai báo ngoại lệ cha.

    86) Kết quả của chương trình Java sau là gì?
     
  • lớp  cơ sở  
  • {  
  •      phương thức void int  a)  
  •     {  
  •         System.out.println ( "Phương thức lớp cơ sở được gọi với số nguyên a =" + a);  
  •     }  
  •        
  •      phương thức void double  d)  
  •     {  
  •         System.out.println ( "Phương thức lớp cơ sở được gọi với double d =" + d);  
  •     }  
  • }  
  •    
  • lớp  Derived  mở rộng  cơ sở  
  • {  
  •     @Ghi đè  
  •      phương thức void double  d)  
  •     {  
  •         System.out.println ( "Phương thức lớp có nguồn gốc được gọi với double d =" + d);  
  •     }  
  • }  
  •    
  • lớp công cộng  Chính   
  • {      
  •     public static void  main (String [] args)    
  •     {  
  •         new  Derived (). method ( 10 );  
  •     }  
  • }  
  • Đầu ra

    Phương thức lớp cơ sở được gọi với số nguyên a = 10
    

    Giải trình

    Phương thức () được nạp chồng trong lớp Base trong khi nó được dẫn xuất trong lớp Derived với kiểu kép là tham số. Trong lời gọi phương thức, số nguyên được chuyển.

    87) Bạn có thể có các hàm ảo trong Java không?

    Có, tất cả các hàm trong Java là ảo theo mặc định.


    88) Kiểu trả về hiệp phương sai là gì?

    Bây giờ, kể từ java5, có thể ghi đè bất kỳ phương thức nào bằng cách thay đổi kiểu trả về nếu kiểu trả về của phương thức ghi đè lớp con là kiểu lớp con. Nó được gọi là kiểu trả về hiệp phương sai. Kiểu trả về hiệp phương sai xác định rằng kiểu trả về có thể thay đổi theo cùng hướng với lớp con.

     
  • lớp  A {  
  • A get () { return this ;}   
  • }  
  •   
  • hạng  B1  mở rộng  A {  
  • B1 get () { return this ;}   
  • void  message () {System.out.println ( "chào mừng bạn đến với kiểu trả về hiệp phương sai" );}  
  •   
  • public static void  main (String args []) {    
  • new  B1 (). get (). message ();  
  • }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra: chào mừng bạn đến với kiểu trả về hiệp phương sai
    

    Thêm chi tiết.


    89) Đầu ra của chương trình Java sau là gì?
     
  • lớp  cơ sở   
  • {  
  •     public void  baseMethod ()   
  •     {  
  •         System.out.println ( "BaseMethod được gọi là ..." );  
  •     }  
  • }  
  • lớp  Derived  mở rộng  cơ sở   
  • {  
  •     public void  baseMethod ()   
  •     {  
  •         System.out.println ( "Phương thức gốc được gọi là ..." );  
  •     }  
  • }  
  •  Kiểm tra    lớp công khai 
  • {  
  •     public static void  main (String args [])    
  •     {  
  •         Cơ sở b =  new  Derived ();  
  •         b.baseMethod ();  
  •     }  
  • }  

  • Đầu ra

    Phương thức bắt nguồn được gọi là ...
    

    Giải trình

    Phương thức của lớp Cơ sở, tức là, baseMethod () được ghi đè trong lớp Derived. Trong lớp Kiểm tra, biến tham chiếu b (kiểu Lớp cơ sở) tham chiếu đến thể hiện của lớp Bắt nguồn. Ở đây, tính đa hình Runtime đạt được giữa lớp Base và Derived. Tại thời điểm biên dịch, sự hiện diện của phương thức baseMethod được kiểm tra trong lớp Cơ sở, Nếu nó hiện diện thì chương trình được biên dịch nếu không thì lỗi trình biên dịch sẽ được hiển thị. Trong trường hợp này, baseMethod hiện diện trong lớp Cơ sở; do đó, nó được biên dịch thành công. Tuy nhiên, trong thời gian chạy, Nó kiểm tra xem baseMethod có bị ghi đè bởi lớp Derived hay không, nếu vậy thì phương thức của lớp Derived được gọi nếu không thì phương thức của lớp cơ sở được gọi. Trong trường hợp này, lớp Derived ghi đè baseMethod; do đó, phương thức lớp Derived được gọi.


    Core Java - Khái niệm OOPs: Câu hỏi phỏng vấn từ khóa cuối cùng

    90) Biến cuối cùng là gì?

    Trong Java, biến cuối cùng được sử dụng để hạn chế người dùng cập nhật nó. Nếu chúng ta khởi tạo biến cuối cùng, chúng ta không thể thay đổi giá trị của nó. Nói cách khác, chúng ta có thể nói rằng biến cuối cùng khi đã được gán cho một giá trị thì không bao giờ có thể thay đổi được sau đó. Biến cuối cùng không được gán cho bất kỳ giá trị nào chỉ có thể được gán thông qua hàm tạo lớp.

    từ khóa cuối cùng trong java

     
  • lớp  Bike9 {  
  •  cuối cùng int  speedlimit = 90 // biến cuối cùng   
  •  void  run () {  
  •   tốc độ = 400 ;  
  •  }  
  •  public static void  main (String args []) {    
  •  Bike9 obj = new   Bike9 ();  
  •  obj.run ();  
  •  }  
  • // cuối lớp  
  • Kiểm tra nó ngay bây giờ

    Đầu ra: Lỗi thời gian biên dịch
    

    Thêm chi tiết.


    91) Phương pháp cuối cùng là gì?

    Nếu chúng tôi thay đổi bất kỳ phương thức nào thành phương thức cuối cùng, chúng tôi không thể ghi đè nó. Thêm chi tiết.

     
  •  xe đạp hạng {  
  •   cuối cùng void  run () {System.out.println ( "đang chạy" );}   
  • }  
  •      
  • hạng  Honda  mở rộng  Xe đạp {  
  •    void  run () {System.out.println ( "chạy an toàn với 100kmph" );}  
  •      
  •    public static void  main (String args []) {    
  •    Honda honda =   Honda mới ();  
  •    honda.run ();  
  •    }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra: Lỗi thời gian biên dịch
    

    92) Lớp cuối cùng là gì?

    Nếu chúng ta tạo bất kỳ lớp nào là cuối cùng, chúng ta không thể kế thừa nó vào bất kỳ lớp con nào.

     
  •  Xe đạp hạng cuối cùng {}   
  •   
  • hạng  Honda1  mở rộng  Xe đạp {  
  •   void  run () {System.out.println ( "chạy an toàn với 100kmph" );}  
  •     
  •   public static void  main (String args []) {    
  •   Honda1 honda =   Honda1 mới ();  
  •   honda.run ();  
  •   }  
  • }  
  • Kiểm tra nó ngay bây giờ

    Đầu ra: Lỗi thời gian biên dịch
    

    Thêm chi tiết.


    93) Biến trống cuối cùng là gì?

    Một biến cuối cùng, không được khởi tạo tại thời điểm khai báo, được gọi là biến trống cuối cùng. Chúng tôi không thể khởi tạo trực tiếp biến trống cuối cùng. Thay vào đó, chúng ta phải khởi tạo nó bằng cách sử dụng hàm tạo lớp. Nó hữu ích trong trường hợp người dùng có một số dữ liệu không được thay đổi bởi người khác, ví dụ: Số PAN. Hãy xem xét ví dụ sau:

     
  •  sinh viên lớp {  
  • int  id;  
  • Tên chuỗi;  
  •  Chuỗi cuối cùng PAN_CARD_NUMBER;  
  • ...  
  • }  
  • Thêm chi tiết.


    94) Chúng ta có thể khởi tạo biến trống cuối cùng không?

    Có, nếu nó không phải là static, chúng ta có thể khởi tạo nó trong hàm tạo. Nếu nó là biến cuối cùng trống tĩnh, nó chỉ có thể được khởi tạo trong khối tĩnh. Thêm chi tiết.


    95) Bạn có thể khai báo phương thức chính là cuối cùng không?

    Có, Chúng ta có thể khai báo phương thức main là public static final void main (String [] args) {}.


    96) Kết quả của chương trình Java sau là gì?
     
  • lớp  chính {  
  •  public static void  main (String args []) {    
  •    int cuối cùng  ;   
  •    i =  20 ;  
  •    System.out.println (i);  
  •  }  
  • }  
  • Đầu ra

    20
    

    Giải trình

    Vì i là biến cuối cùng trống. Nó chỉ có thể được khởi tạo một lần. Chúng tôi đã khởi tạo nó thành 20. Do đó, 20 sẽ được in.


    97) Đầu ra của chương trình Java sau là gì?
     
  • lớp  cơ sở   
  • {  
  •     được bảo vệ cuối cùng void  getInfo ()    
  •     {  
  •         System.out.println ( "phương thức của lớp Cơ sở" );  
  •     }  
  • }  
  •    
  • công lớp  Derived  mở rộng  cơ sở   
  • {  
  •     được bảo vệ cuối cùng void  getInfo ()    
  •     {  
  •         System.out.println ( "phương thức của lớp Derived" );  
  •     }  
  •     public static void  main (String [] args)    
  •     {  
  •         Base obj =  new  Base ();  
  •         obj.getInfo ();  
  •     }  
  • }  
  • Đầu ra

    	Derived.java:11: error: getInfo () trong Derived không thể ghi đè getInfo () trong Base
        được bảo vệ cuối cùng void getInfo ()
                             ^
      phương pháp ghi đè là cuối cùng
    1 lỗi
    

    Giải trình

    Phương thức getDetails () là cuối cùng; do đó nó không thể bị ghi đè trong lớp con.


    98) Chúng ta có thể khai báo một hàm tạo là cuối cùng không?

    Hàm tạo không bao giờ có thể được khai báo là cuối cùng vì nó không bao giờ được kế thừa. Constructors không phải là phương pháp thông thường; do đó, không có ý nghĩa gì khi khai báo các hàm tạo là cuối cùng. Tuy nhiên, nếu bạn cố gắng làm như vậy, trình biên dịch sẽ báo lỗi.


    99) Chúng ta có thể khai báo một giao diện là cuối cùng không?

    Không, chúng ta không thể khai báo một giao diện là cuối cùng vì giao diện phải được thực thi bởi một số lớp để cung cấp định nghĩa của nó. Do đó, không có ý nghĩa gì khi tạo một giao diện cuối cùng. Tuy nhiên, nếu bạn cố gắng làm như vậy, trình biên dịch sẽ hiển thị lỗi.


    100) Sự khác biệt giữa phương thức cuối cùng và phương pháp trừu tượng là gì?

    Sự khác biệt chính giữa phương thức cuối cùng và phương thức trừu tượng là phương thức trừu tượng không thể là phương thức cuối cùng vì chúng ta cần ghi đè chúng trong lớp con để đưa ra định nghĩa của nó.

    bigdata 2020/11/11 22:31

    Để lại dấu chân

    Bước trên một chân

    Bình luận

    copyright © bigdata 2010-2020
    Processed in 0 seconds, 0 queries