Mình vô tình mò được đoạn code java sau và không hiểu sao nó lại chạy đc:
public class test {
private int a = 10;
private void printA() {
System.out.println(a);
}
public test(int a) {
this.a = a;
}
public void callPrintA() {
test bla = new test(1000);
bla.printA();
}
}
Tại sao object bla lại có thể gọi được method printA() trong khi nó là private? Và mình có đọc thì private chỉ cho phép trong nội bộ class hiện hành. Vậy khi new bla() thì nó ra 1 object mới nhưng sao vẫn có truyền truy cập printA() mọi người nhỉ? Trong khi nếu mình làm như code dưới thì sẽ báo lỗi đúng như tính chất của nó.
public class Blabla {
public static void main(String[] args) throws IOException {
test bla = new test(100);
//bla.printA(); Netbean sẽ báo lỗi
bla.callPrintA(); // in ra 1000
}
}
Vậy không lẽ 2 object trên có bản chất khác nhau? @_@
Mình nghĩ là khác nhau :? Nhưng không rõ khác chỗ nào.
Mọi người giải thích giúp mình với. Ko rõ Kw nên chả biết GG như thế nào
Thanks nhiều
EDIT: Phát hiện ra là object như trên có thể truy cập đc mọi thứ chứ ko riêng gì private method. :c