2013-07-10 39 views
11

Trong Scala, có thể xác định một lớp cơ sở hoặc đặc điểm (giao diện) được niêm phong, để các lớp duy nhất được phép mở rộng lớp đó phải được đặt trong cùng một lớp .Niêm phong lớp trừu tượng hoặc giao diện trong lớp .NET

Đây là một mẫu hữu ích khi mã hóa các thư viện, có tương đương với .NET không?

+0

Tôi không thấy lợi thế, bạn có thể hài lòng ELI5? (Tôi biết những gì bạn muốn, nhưng tôi không biết tại sao) – jnovacho

+0

Vâng với mô hình này, bạn thực sự có thể thực hiện "tinh vi" liệt kê và điều này thực sự hữu ích. Bạn có thể đảm bảo rằng chỉ có một số triển khai nhất định cho lớp trừu tượng của bạn – Edmondo1984

+0

Ồ tôi hiểu rồi! Cảm ơn. – jnovacho

Trả lời

21

Cách duy nhất để mô phỏng đó là có một hàm tạo riêng trong lớp trừu tượng và cung cấp việc triển khai làm lớp lồng nhau.

Ví dụ

public abstract class Foo 
{ 
    private Foo(int k) {} 

    public class Bar : Foo 
    { 
    public Bar() : base(10) {} 
    } 
} 
+5

+1. Hoặc đánh dấu hàm tạo của một lớp trừu tượng 'nội bộ' là một tùy chọn tương tự khác mà bạn có thể nhận được cho các lớp. –

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