Tất cả các đối tượng trong actionscript3.0 kế thừa từ lớp Object, nhưng trình biên dịch actionscript3.0 có vẻ không đủ thông minh để hiểu điều này.Tại sao hành vi thừa kế lớp actionscript3.0 không thành công (đôi khi)?
hãy nhìn vào đoạn mã sau:
package{
public class TestOne{
public function TestOne(){
var t2: TestTwo = new TestTwo();
trace(t2.toString()); // COMPILE TIME ERROR
trace((t2 as Object).toString(); // [object TestTwo]
var t22 : * = new TestTwo();
trace(t22.toString()); // [object TestTwo]
trace((t22 as Object).toString(); // [object TestTwo]
}
}
}
class TestTwo{}
t2.toString() đưa ra một lỗi thời gian biên dịch vì kiểu dữ liệu t2 không bao gồm toString(). Tuy nhiên, t2 không bao gồm toString() vì nó là một đối tượng là (t2 là đối tượng) .toString() hiển thị. Nếu chúng ta không cung cấp cho biến một kiểu dữ liệu, như t22, thì vấn đề không bao giờ gặp phải. Tại sao trình biên dịch actionscript3.0 không thể giải thích rằng t2 là cả TestTwo và Object?
Ý của bạn là cho các dòng 9 và 10 để tìm ra biến "t22" thay vì "t2"? – aaaidan
Có một số lỗi chính tả trong ví dụ của bạn, nhưng câu hỏi thực sự thú vị ... –