Khi sử dụng C++ thì không được phép truy cập thuộc tính riêng bên trong một hàm chính. Ví dụ:Ý tưởng đằng sau quyền truy cập thuộc tính riêng bên trong chính là gì? Java x C++
#include <iostream>
using namespace std;
class Test {
private: int a;
public:
Test(int value) { a = value; }
int getValue() { return a; }
};
int main (int argc, char *argv[]) {
Test test2(4);
cout << test2.a; // Compile error! Test::a is private within this context
cout << test2.getValue(); // OK!
return 0;
}
Rõ ràng là có lỗi khi truy cập thuộc tính riêng bên ngoài phương thức lớp, vì C++ không có chức năng chính bên trong lớp học.
Tuy nhiên, trong Java thì được phép:
public class Test {
private int a;
public Test(int value) { a = value; }
public int getValue() { return a; }
public static void main (String args[]) {
Test test1 = new Test(4);
System.out.println(test1.a);
}
}
Tôi hiểu trong trường hợp này chính là INSIDE class Test. Tuy nhiên, tôi không thể hiểu được ý tưởng TẠI SAO điều này được cho phép và tác động của điều này trong việc phát triển/quản lý mã.
Khi học C++, tôi đã từng nghe "Lớp học không nên có chính. Các hành vi chính có hoặc sử dụng các phiên bản lớp".
Ai đó có thể làm sáng tỏ câu hỏi này không?
'main' khá nhiều phải sống trong một lớp học trong java, vì nó sẽ là bất hợp pháp cho nó để sống bên ngoài của một lớp học. Không có phạm vi toàn cục cho các hàm trong java. – Dervall
Tôi luôn luôn có điểm vào chính trong một lớp học không có gì khác ngoài chức năng chính. Nó thực sự không có ý nghĩa để có chính trong một lớp học với tôi hoặc. – L7ColWinters
Bởi các câu trả lời cho đến nay tôi tin rằng đây là sự lựa chọn của các nhà phát triển ngôn ngữ: không tạo ngoại lệ cho Main(), ngay cả khi nó là một chức năng đặc biệt, cấp quyền truy cập bất kỳ phương pháp nào khác. –