2011-09-11 40 views

Trả lời

13

tôi sẽ tưởng tượng này là bởi vì không có cách nào để làm cho họ cụ thể:

class Foo extends Table { 
    override val records = 3 
} 

sẽ thất bại, vì records là tin tới Table.

Nó sẽ làm cho Table loại vô dụng. Tôi không thể thấy rằng nó sẽ làm tổn thương bất cứ điều gì, chỉ cần nó gần như chắc chắn chỉ ra một sai lầm của các lập trình viên.

19

Để mở rộng một chút về câu trả lời của @ Owen: bạn có thể khai báo thành viên riêng tư.

abstract class Table { 
    private val records: Int = 0 
} 

Nhưng bạn không thể khai báo thành viên riêng tư trừu tượng. Tại sao? Bởi vì bất kỳ lớp cụ thể nào mở rộng một lớp trừu tượng phải ghi đè lên bất kỳ thành viên trừu tượng nào và nó không thể ghi đè lên một thành viên riêng tư. Vì vậy, bạn không thể có bất kỳ lớp bê tông nào mở rộng Table.

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