Bạn không thể tạo một constructor abstract
, nhưng đây là một cách giải quyết mà bạn có thể làm:
Thực hiện một lớp abstract
với tất cả các nhà thầu bạn muốn người dùng để thực hiện. Trong mỗi người trong số họ, bạn sẽ có một câu lệnh duy nhất đề cập đến phương thức abstract
từ lớp này, việc triển khai nào sẽ ở trong lớp con. Bằng cách này, bạn sẽ buộc người dùng phải cung cấp một cơ quan cho hàm tạo, thông qua triển khai phương pháp trừu tượng. Ví dụ:
public abstract class MyAbstractClass {
public MyAbstractClass(int param) {
method1(param);
}
public MyAbstractClass(int param, int anotherParam) {
method2(param, anotherParam);
}
protected abstract void method1(int param);
protected abstract void method2(int param, int anotherParam);
}
Trong việc thực hiện, bạn sẽ có buộc để cung cấp thực hiện hai phương pháp này, có thể đại diện cho các cơ quan của hai cấu trúc:
public class MyClass extends MyAbstractClass {
public MyClass(int param) {
super(param);
}
public MyClass(int param, int anotherParam) {
super(param, anotherParam);
}
public void method1(int param) {
//do something with the parameter
}
public void method2(int param, int anotherParam) {
//do something with the parameters
}
}
Nguồn
2015-01-06 14:08:00
gì constructors nào bạn muốn thực hiện (và tại sao)? – ErstwhileIII
Một hàm tạo rỗng và một hàm tạo bản sao. Tuy nhiên tôi đặt câu hỏi bởi vì tôi muốn biết cho một mục đích chung. – yonutix