Nếu có một hàm tạo riêng, thì JVM có chèn một lệnh gọi tới hàm tạo siêu không?sử dụng hàm tạo riêng trong lớp
Tôi đang đề cập đến cuộc gọi super()
trong hàm tạo riêng tư đó.
class Alpha {
static String s="";
protected Alpha(){
s+="alpha";
}
}
class SubAlpha extends Alpha{
private SubAlpha(){
s+="sub";
}
}
class SubSubAlpha extends Alpha{
private SubSubAlpha(){
s+="subsubAlpha";
}
public static void main(String[] args){
new SubSubAlpha();
System.out.print(s);
}
}
Ở đây tôi không nhận được bất kỳ lỗi biên dịch nào. Ở đây trong lớp SubSubAlpha
có hàm tạo riêng. Là trình biên dịch chèn super()
gọi trong đó nếu như vậy, những gì sẽ xảy ra trong lớp SubAlpha
. Thậm chí có một hàm tạo riêng. Và nếu đó không phải là truy cập như thế nào cây thừa kế tiếp tục cho đến đầu trang.
(Nếu siêu lớp không-args constructor là tư nhân (và có nguồn gốc lớp không nằm trong cùng lớp bên ngoài, hoặc là lớp truy cập mặc định và lớp dẫn xuất không nằm trong cùng một gói; hoặc chỉ thiếu) sau đó nếu các hàm tạo của lớp dẫn xuất thiếu một 'super()' hoặc 'this()', sau đó họ sẽ không biên dịch. 'class Base {private Base() {} } class Derived mở rộng Base {} ') –
bạn có nghĩa là' lớp SubSubAlpha mở rộng SubAlpha'? –