NỘI DUNG BÀI VIẾT
Các khái niệm về OPPs: Các câu hỏi phỏng vấn kế thừa
1. this trong java là gì?
this là từ khóa trong java tham chiếu đến đối tượng hiện tại.
2. Kế thừa là gì?
Kế thừa là một cơ chế trong đó một đối tượng được thừa hưởng tất cả thuộc tính và phương thức của đối tượng khác của lớp khác. Nó được sử dụng để tái sử dụng code và ghi đè phương thức.
3. Lớp nào là lớp cha cho tất cả các lớp.
Lớp Object
4. Tại sao đa kế thừa không được hỗ trợ trong java.
Để giảm thiểu sự phức tạp và đơn giản hóa ngôn ngữ, đa kế thừa không được support trong java.
5. Composition là gì?
Khai báo biến tham chiếu của một class trong một class khác được gọi là composition(sự hợp thành).
6. Sự khác nhau giữa aggregation và composition?
Aggregation biểu diễn mối quan hệ yếu, còn composition biểu diễn quan hệ chặt chẽ. Ví dụ: xe máy có một công tơ mét (aggregation), nhưng xe máy có một động cơ (composition).
7. Tại sao java không support con trỏ?
Con trỏ là một biến tham chiếu tới địa chỉ ô nhớ. Nó không được sử dụng trong java vì nó không an toàn và phức tạp.
8. super trong java là gì?
Nó là một từ khóa mà tham chiếu trực tiếp đến đối tượng của lớp cha.
9. Có thể sử dụng cả this() và super() trong một constructor?
Không, vì this() gọi đến một constructor khác trong lớp hiện tại, còn super() gọi constructor của lớp cha.
10. Object cloning là gì?
object cloning được sử dụng để tạo ra một bản sao giống hệt đối tượng ban đầu.
Các khái niệm về OPPs: Các câu hỏi phỏng vấn overloading phương thức
11. Overloading (nạp chồng) phương thức là gì?
Nếu một lớp có nhiều phương thức có tên giống nhau nhưng các tham số khác nhau, được gọi là overloading phương thức (nạp chồng phương thức). Nó giúp code rõ ràng, dễ hiểu hơn.
12. Tại sao overloading phương thức không xảy ra khi thay đổi kiểu giá trị trả về?
Bởi vì đó là sự không rõ ràng, không biết gọi phương thức nào khi runtime.
13. Có thể overload phương thúc main() không?
Có, có thể overload phương thức main().
Các khái niệm về OPPs: Các câu hỏi phỏng vấn overriding phương thức
1. Ghi đè (overriding) phương thức là gì?
Nếu lớp con có phương thức giống lớp cha được gọi là ghi đè (overriding) phương thức trong java.
Nói cách khác, nếu lớp con cung cấp sự cài đặt cụ thể cho phương thức đã được cung cấp bởi một lớp cha của nó được gọi là ghi đè (overriding) phương thức trong java.
2. Có thể ghi đè phương thức static không?
Bạn không thể ghi đè phương thức static vì chúng thuộc về class chứ không thuộc về đối tượng.
3. Tại sao không thể ghi đè phương thức static?
Bởi vì phương thức static là một phần của lớp và nó bị ràng buộc với lớp, trong khi phương thức instance là bị ràng buộc với đối tượng, static được lưu trong vùng nhớ Class và instance được lưu trong bộ nhớ heap.
4. Có thể ghi đè phương thức đã nạp chồng?
Có.
5. Có thể ghi đè biến instance không?
Không.
6. Sự khác nhau giữa nạp chồng và ghi đè là gì?
No. | Nạp chồng phương thức (overloading) | Ghi đè phương thức (overriding) |
---|---|---|
1) | Nạp chồng phương thức được sử dụng để giúp code của chương trình dễ đọc hơn. | Ghi đè phương thức được sử dụng để cung cấp cài đặt cụ thể cho phương thức được khai báo ở lớp cha. |
2) | Nạp chồng được thực hiện bên trong một class. | Ghi đè phương thức xảy ra trong 2 class có quan hệ kế thừa. |
3) | Nạp chồng phương thức thì tham số phải khác nhau. | Ghi đè phương thức thì tham số phải giống nhau. |
4) | Nạp chồng phương thức là ví dụ về đa hình lúc biên dịch. | Ghi đè phương thức là ví dụ về đa hình lúc runtime. |
5) | Trong java, nạp chồng phương thức không thể được thực hiện khi chỉ thay đổi kiểu giá trị trả về của phương thức. Kiểu giá trị trả về có thể giống hoặc khác. Giá trị trả về có thể giống hoặc khác, nhưng tham số phải khác nhau. | Giá trị trả về phải giống nhau. |
7. Kiểu trả về hiệp biến là gì?
Từ java 5 trở đi, có thể ghi đè bất kỳ phương thức nào bởi việc thay đổi kiểu giá trị trả về. Nếu kiểu trả về của phương thức ghi đè của lớp con là lớp con. Nó được gọi là kiểu trả về hiệp biến.
Các khái niệm về OPPs: Các câu hỏi phỏng vấn từ khóa final
8. Biến final là gì?
Nếu bạn tạo một biến với từ khóa final, bạn sẽ không thể thay đổi được giá trị của biến đó (hằng số).
9. Phương thức final là gì?
Phương thức final không thể được ghi đè.
10. Lớp final là gì?
Lớp final không thể được kế thừa.
11. Biến final blank là gì?
Một biến final không được khởi tạo giá trị lúc khai báo được gọi là biến final blank.
12. Có thể khởi tạo giá trị cho biến final blank không?
Có, nếu biến đó là non-static thì chỉ khởi tạo được trong constructor. Nếu biến đó là static thì chỉ khởi tạo được trong khối static.
13. Có thể khai báo phương thức main là final không?
Có, giống như: public static final void main(String[] args){}