Tôi bắt đầu viết Java program đầu tiên của mình.Làm thế nào để lớp chứa phương thức chính không được khởi tạo và vẫn ổn trong Java?
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
Chương trình chỉ chạy tốt với mã ở trên. Nhưng theo kiến thức OOP của tôi, một class
chỉ là một khái niệm trừu tượng và không đến với cuộc sống cho đến khi bạn tạo ra một đối tượng thuộc loại này. Và sau đó, thông qua đối tượng đó, chúng ta gọi các phương thức/hàm trong lớp.
Nhưng trong ví dụ cụ thể này, có vẻ như main
phương pháp được gọi là thậm chí mà không cần tạo một đối tượng của class
HelloWorldApp
là đối tượng được tạo ra ở một nơi khác? Nếu vậy, phần mã đó biết tên class
tên HelloWorldApp
của tôi như thế nào?
Điều đó có nghĩa là tôi có thể gọi bất kỳ chức năng tĩnh nào bên trong bất kỳ lớp nào khác không? Nó không làm giảm đi khái niệm đóng gói? –
có bạn có thể, các trường/phương thức tĩnh được liên kết với lớp (mỗi lớp được tải và không phải với đối tượng), nếu chúng được công khai, bạn có thể thực hiện nó –
Đóng gói không phải là quy tắc được thực thi bởi trình biên dịch mà là nguyên tắc sử dụng để cố gắng tạo mã tốt hơn. Ngôn ngữ và trình biên dịch có thể giúp chúng tôi đạt được đóng gói nhưng không ép buộc chúng tôi. Ngay cả một ngôn ngữ hướng đối tượng thuần túy như Smalltalk cũng không buộc bạn phải theo dõi sự đóng gói. Tuy nhiên, trong Smalltalk, các lớp là chính các đối tượng thực, do đó bạn có thể gửi các thông điệp mà chúng phản hồi. Bạn thậm chí có thể kế thừa chúng trong các lớp con và có các lớp con gọi super. –