2013-12-15 14 views
5

Trong Dart, tôi có đoạn mã sau:Lỗi: constructor mặc định đã được xác định

class FirstClass { 
    FirstClass(a) { 

    } 
} 

class SecondClass extends FirstClass { 

} 

Điều này gây ra và lỗi trên SecondClassFirstClass không có một constructor mặc định.

Tuy nhiên, khi tôi cố gắng thêm một thẻ.

class FirstClass { 
    FirstClass(a) { 

    } 

    FirstClass() { 

    } 
} 

Lỗi do hàm tạo mặc định đã được xác định trong FirstClass.

Cách duy nhất tôi có thể thực hiện công việc này chứ không phải lỗi là nếu siêu lớp không triển khai bất kỳ nhà thầu nào cả. Tôi đang làm gì sai?

Trả lời

5

Trong phi tiêu, bạn không thể có cùng tên phương thức/hàm dựng được sử dụng nhiều lần (ngay cả với các tham số khác nhau).

Trong trường hợp của bạn, bạn có thể sử dụng tên constructor để xác định 2 cấu trúc:

class FirstClass { 
    FirstClass() {} 
    FirstClass.withA(a) {} 
} 

hoặc xác định a như tùy chọn và giữ chỉ có một constructor:

class FirstClass { 
    FirstClass([a]) {} 
} 
+0

Và lý do là Dart không tĩnh gõ và do đó không thể sử dụng các kiểu tham số để phân biệt/quá tải cùng một phương thức/tên hàm dựng. – lcn

Các vấn đề liên quan