Mã đằng sau:java: clone phương pháp vi phạm
class A implements Cloneable
{
int i, j;
A(int i, int j)
{
this.i = i;
this.j = j;
}
A()
{
}
}
class B extends A
{
int l, m;
B()
{
}
B(int l, int m)
{
this.l = l;
this.m = m;
}
public static void main(String l[])
{
A obj = new A(1, 2);
B obj1 = (B) obj.clone(); // ERROR
}
}
Tôi biết rằng tôi đang vi phạm các nghĩa của bản sao như tôi đang cố gắng để gán các lĩnh vực của một đối tượng đến một đối tượng hoàn toàn khác nhau. Nhưng tuyên bố lỗi của nó khiến tôi bối rối.
Bản Tuyên Bố: "Lỗi: clone() đã bảo vệ truy cập trong Object"
Mở rộng Một nên clone()
sẵn cho B cũng? Nếu đó là, vì vậy giá trị của i và j nên được sao chép vào l và m cũng? Điều này có thể không?
nếu bản sao() được bảo vệ thì nó có sẵn cho A và nếu B mở rộng A thì B có quyền truy cập vào bản sao? – Nil
@ rd4code Xem câu trả lời của tôi. B có quyền truy cập vào phương pháp sao chép. Nhưng B nên truy cập nó thông qua kế thừa và không thông qua A trực tiếp. – CKing