Đây là bài tập huấn luyện để hiểu các hoạt động của các lớp bên trong trong Java. Theo câu hỏi, có bao nhiêu phiên bản khác nhau của x
có thể truy cập được trong (*)
?Có thể truy cập bao nhiêu phiên bản khác nhau của 'x' trong (*)?
class Outer {
int x;
class Inner extends Outer {
int x;
void f(int x) {
(*)
}
}
}
tôi nghiêng để nghĩ rằng có 3, cụ thể là: this.x
, super.x
và x
nhưng một số đồng nghiệp của tôi dường như nghĩ rằng có 4.
Những người trong chúng ta đang lúng túng? Và bạn có thể giải thích?
Bleaaah, thật là một mớ hỗn độn. Nhưng tôi nghiêng về phía 4, phân biệt 'Outer.this.x' từ' super.x', bởi vì bạn có 'Outer' là cả supertype và một kiểu kèm theo, và chúng là khác biệt. –
Chính xác.Với 'Outer a = new Outer(); Bên trong b = a.new Inner(); 'có 4 trong số chúng. –
một số biểu mẫu cú pháp khác - 'Inner.super.x',' ((Bên ngoài) này) .x' – ZhongYu