tôi đã tự hỏi nếu có một tính năng ngôn ngữ trong Java, trong đó phương pháp của một lớp cha sẽ là vô hình cho các thành viên của một lớp con:Cấu trúc lớp được bảo vệ trong Java?
public class Subclass extends protected Superclass
hoặc một cái gì đó. Tôi sẽ đưa ra một ví dụ.
Đây là lớp cha của bạn.
public class A{
public String getA(){...}
public String getB(){...}
public String getC(){...}
public void setA(String a){...}
public void setB(String b){...}
public void setC(String c){...}
}
Nếu bạn muốn phân lớp Một khi bảo vệ một số phương thức của nó, và bạn không thể thay đổi modifyers truy cập trong phương pháp trừ khi bạn ghi đè lên chúng, bạn sẽ kết thúc với một cái gì đó giống như this-
public class B extends A{
private String getA(){return super.getA();}
private String getB(){return super.getB();}//These four methods have
private void setA(String a){super.setA(a);}//to be redeclared.
private void setB(String b){super.setB(b);}
public String getC(){return super.getC();}//These two methods can be
public void setC(String c){super.setC(c);}//removed.
public String getD(){...}
public void setD(String d){...}
}
hoặc đó hoặc bạn có thể giữ một trường hợp riêng của A và có một cái gì đó như thế này:
public class B{
private A obj;
private String getA(){return obj.getA();}
private String getB(){return obj.getB();}//These four methods can also
private void setA(String a){obj.setA(a);}//be removed.
private void setB(String b){obj.setB(b);}
public String getC(){return obj.getC();}//These two methods are
public void setC(String c){obj.setC(c);}//redeclared.
public String getD(){...}
public void setD(String d){...}
}
bạn có thể có cái gì đó mất cả trong một cách mà bạn không cần phải redeclare bất kỳ phương pháp?
+1 để so sánh với C++ (đã được bảo vệ và kế thừa riêng). –
Khi tôi sử dụng để dạy nâng cao C++, tôi sử dụng để vẽ sơ đồ venn để hiển thị các mối quan hệ con, và hiển thị những gì được nhìn thấy bên trong và bên ngoài các lớp con, thấy nó rất hiệu quả để chứng minh khái niệm. Tuy nhiên, tôi cảm thấy rằng nó thường gặp nhiều rắc rối hơn nó đáng giá. – Uri