Review kiến thức java core

Chào anh chị ạ,
Do topic cũ đã đóng nên em lập topic mới (Tạo nhóm học Lập Trình Java)

Trích lời

Em cũng mới học lại java core (em biết code rồi, đã sử dụng Spring) nhưng đang bị mất gốc. Em xin trả lời như sau:

interface, abstract class, class có thể cùng nằm trong 1 file java không ?

=> Được, thậm chí có thể khai báo như này:

public abtract interface ABC {}

khi bạn khai báo 1 constructor thì default construcor có còn không?

=> Không, khai báo constructor thì defalut constructor sẽ mất.

khái niệm default constructor với user-define constructor?

=> default constructor là hàm được JVM tự khởi tạo khi class không có user define constructor, nó không có tham số, body rỗng nếu không có kế thừa. Còn user define constructor là method constructor chúng ta viết thường ngày.

class con có thừa kế thuộc tính private của class cha không, có thể truy cập được không?

=>Không, class con chỉ kết thừa được thuộc tính có modified từ protected trở lên.


Còn 2 câu này thì em không biết, mong được giải đáp, em cảm ơn.

2 class trong 1 file.java khi biên dịch sẽ cho mấy file.?


cách khai báo thế này có ý nghĩa gì classCha oj = new classCon()

=> Có phải để phòng hờ trường hợp oj trong tương lai có thể bị gán lại object khác mà cũng cùng là con của classCha?

1 Like

2 class trong 1 file.java khi biên dịch sẽ cho mấy file.?

Cậu sẽ có 2 file .class sau khi dịch.

cách khai báo thế này có ý nghĩa gì classCha oj = new classCon()

Nó chỉ là 1 cách khai báo thôi :smile:
Câu hỏi đúng nên là “khai báo này nhằm mục đích gì?”. Và tớ nghĩ cậu hiểu mục đích của nó rồi, đấy là khi cậu muốn tận dụng tính đa hình, và khiến cho code của cậu không bị phụ thuộc vào cài đặt cụ thể của 1 subclass nào.


Ở mấy câu trả lời trên của cậu, tớ thấy cậu nắm được cơ bản rồi. Chỉ có một số điểm nho nhỏ tớ muốn sửa lại thôi.

=> default constructor là hàm được JVM tự khởi tạo khi class không có user define constructor…

Default constructor là phương thức khởi tạo được compiler khởi tạo…
Compiler là thành phần dịch mã Java sang bytecode, và nó là nơi đảm nhận việc thêm default constructor. JVM là thành phần load bytecode và thực thi bytecode.

public abtract interface ABC {}

Phần này thực ra không liên quan tới vụ abstract class/class/interface ở cùng 1 nơi đâu cậu :smile:
Từ khóa abstract ở trên thực ra có thể lược bỏ. Abstract interface và interface là một (interface nào cũng abstract cả mà :smile:).


Tớ không nghĩ cậu mất gốc đâu. Cậu đã nắm tương đối tốt các kiến thức Java cơ bản rồi. Trong quá trình làm việc, cậu sẽ rèn luyện được thêm về Java core thôi, miễn là cậu vẫn giữ được tính tò mò.
Tự tin lên nhé! :smile:

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?