Tôi ngớ ngẩn tại sao điều này được phépsubclassing Nội Lớp từ Outer Lớp so với khác Nội Lớp
public class Foo {
class Bar extends Foo {
}
}
Tuy nhiên điều này là không được phép
public class Foo {
class Bar extends Foo {
}
class Fooey extends Bar {
}
}
Trình biên dịch thông báo rằng nó không thể tham khảo Fooey.this trước khi constructor supertype được gọi.
Và điều này được phép
public class Foo {
static class Bar extends Foo {
}
class Fooey extends Bar {
}
}
gì đang xảy ra ở đây? Và tôi có thể đi đâu để tìm thêm thông tin về cách thức hoạt động của lớp bên trong?
EDIT Tôi nghĩ đến cả hai ý tưởng khá nghèo; lớp bên trong mở rộng lớp bên ngoài và lớp bên trong mở rộng lớp bên trong tĩnh khác. Tôi đã không chắc chắn chính xác những gì đã xảy ra và làm thế nào tôi nên refactor này. Tôi đã kết thúc chỉ yanking ra các lớp bên trong và đóng gói chúng trong lớp bên ngoài.
Kiểm tra câu hỏi này, khá chắc chắn rằng điều này trùng lặp nó: http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class –
Không phải là một bản dupe (ít nhất không phải là một). –
Việc sử dụng lớp bên ngoài của lớp bạn đang mở rộng là gì? – Jorn