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 modifier là static 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ẻ !!!
main()
trong C++ không phải là phương thức.lỗi của mình , vậy phải gọi là hàm mới đúng. Để mình sửa lại