01/10/2018, 08:14

Bàn về phương thức main() trong Java

Xin chào mọi người
Hôm nay mình xin đem những gì mình biết để bàn về phương thức main) trong java.
Post này được lập ra vì khi mình nhận ra thiếu sót trong kiến thức của mình khi trả lời ở post: [Làm sao để liên kết class trong java bằng switch]
(Làn sao để liên kết class trong java bằng switch)

trong 1 project chỉ chứa duy nhất duy nhất 1 class có hàm public static void main(String[] args) thôi

Đây là lời khuyên mình đọc từ trong sách chứ không phải là nguyên tắc của Java: 1 chương trình hay 1 ứng dụng thì khuyến khích 1 class có phương thức main() dùng để run cả 1 chương trình/ ứng dụng.

Vậy phương thức main() là gì ? Có ăn được không ?:
Trong mỗi chương trình, ứng dụng đều có 1 header chứa các các thông tin như: hệ điều hành tương thích, ngôn ngữ lập trình, entry point (hay còn gọi là starting point),…

Entry point: báo hệ điều hành biết rằng nơi nào để bắt đầu chương trình/ ứng dụng. Điển hình trong Java/ C++/ C, phương thức main() được dùng như 1 quy ước với hệ điều hành đây là Entry point của chương trình/ ứng dụng.

Lưu ý: C/C++ main() là hàm
Java: main là phương thức

Nếu thắc mắc, link google đây: https://www.google.com.vn/webhp?sourceid=chrome-instant&rlz=1C1CHBF_enVN718VN718&ion=1&espv=2&ie=UTF-8#q=what+difference+between+function+and+method

Quay lại topic, mình có thể nói rằng: 1 chương trình có thể có nhiều class chứa hàm main()
Vậy nên với bài tập của @hunter, với câu lệnh,[quote=“hunter, post:11, topic:40728”]
b1.main();
[/quote]

thì hoàn toàn hợp lệ

Nói là hợp lệ nhưng vẫn gặp lỗi. Tại sao ư ? Hay nhìn kĩ cú pháp của phương thức main() trong Java:

public static void main (String[] args) { }

Thứ nhất: phương thức dùng access modifierstatic nghĩa là phương thức chỉ được chỉ truy cập thông qua class, chứ không phải thông qua đối tượng

-> Câu lệnh nên sửa lại là: bai1.main()

Thật ra nếu không sửa lại thì vẫn được vì Compiler sẽ phớt lờ biến b1 đi và quan tâm đến class của nó mà thôi, nhưng mình khuyến khích nên sửa lại để tôn vinh cái chất của Java

Nhưng có thứ nhất thì phải có thứ hai, câu lệnh trên vẫn phát sinh lỗi:

Thứ hai: phương thức main là phương thức có tham số String[] args
-> Ta cần truyền 1 đối số có kiểu dữ liệu thích hợp vào phương thức main, ở đây mình xin sửa lại: bai1.main(null);

=> Thế là có thể chạy được chương trình của @hunter (nếu không còn lỗi nào khác)

Cảm ơn 1 cựu thành viên ưu tú ở đây đã giúp mình sửa sai lại kiến thức (xin giấu tên thành viên này). Chúc anh có một ngày tốt đẹp

Cảm ơn mọi người đã cố công đọc bài của em !!!
@hunter để ý cái này giúp mình nhé

Nếu có gì thiếu sót, đừng ngại ném đá em. Chúc mọi người năm mới vui vẻ !!!

rogp10 viết 10:24 ngày 01/10/2018

main() trong C++ không phải là phương thức.

Tynk Huynk viết 10:30 ngày 01/10/2018

lỗi của mình , vậy phải gọi là hàm mới đúng. Để mình sửa lại

Bài liên quan
0