Kotlin: Biểu thức đối tượng và khai báo đối tượng

Tram Ho

Chào mọi người, quay trở lại seri kotlin, trong bài viết này chúng ta sẽ cùng tìm hiểu hai khái niệm khá hay trong kotlin là Object Expression và Object Declarations, chúng thường được sử dụng khá phổ biến và trở nên hữu ích trong các trường hợp.
Hãy cùng đi vào tìm hiểu thông qua khái niệm và ví dụ cụ thể đi kèm.

I. Context

Đôi khi, trong một số trường hợp, bạn cần tạo một object có sự sửa đổi nhỏ của một số class mà không cần khai báo rõ ràng một subclass mới cho nó.

Kotlin giúp chúng ta xử lý trường hợp này với Object Expression and Object Declarations.

I. Object Expression

Đầu tiên là Object Expression (biểu thức đối tượng), thực ra đây là khái niệm quen thuộc với các lập trình viên java, nó tương đương với khái niệm Anonymous class trong java,
Anonymous class được định nghĩa là biểu thức và không có tên.

Object Expression được sử dụng để khởi tạo các object có thể kế thừa từ một số class hoặc triển khai một Interface

Chúng ta cũng có thể tạo một Instance của abstract class.

Nếu một supertype có một constructor, các tham số thích hợp của constructor phải được chuyển cho nó.

Nhiều supertype có thể được chỉ định dưới dạng được phân tách bằng dấu phẩy.

Trong trường hợp chúng ta chỉ cần dùng để tạo một object, không cần supertypes.

Nơi sử dụng anonymous object:

Các anonymous object chỉ có thể được sử dụng như là type trong khai báo local và private.

Nếu bạn sử dụng một anonymous object làm kiểu trả về của một function/public property, thì type thực tế của function/property đó sẽ là supertype được khai báo của anonymous object hoặc sẽ là Any nếu không khai báo bất kỳ supertype nào.

Các member được thêm vào anonymous object sẽ không thể truy cập được.

II. Object Declarations

Tiếp theo sẽ là anh bạn Object Declarations (khai báo đối tượng), được sử dụng khá phổ biến không kém Object Expression.

Khác với Object Expression, Object Declarations luôn có tên theo sau từ khóa object. Cũng giống như một khai báo biến.

Một Object Declarations không phải là một expression, và không thể dùng để gán.

Các objects như vậy cũng có thể có supertypes.

Note: Object Declarations không được là local (tức là bị lồng trực tiếp bên trong một function) nhưng chúng có thể được lồng vào các object declarations khác hoặc các non-inner classes.

III. Conclusion

Như vậy chúng ta đã tìm hiểu được Object Expression và Object Declarations trong kotlin, thông qua khái niệm và các ví dụ cụ thể, biết được các trường hợp sử dụng và lưu ý đi kèm.

Hy vọng các bạn có thể sử dụng được trong các tình huống thực tế của dự án.

Cảm ơn các bạn vì đã đọc, xin chào và hẹn gặp lại trong các bài viết tiếp theo.

Refer: https://kotlinlang.org/docs/object-declarations.html#object-declarations

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo