Lớp trừu tượng Kotlin và các thành viên trừu tượng

Trong bài viết này, bạn sẽ tìm hiểu về lớp trừu tượng và cách triển khai nó trong Kotlin (với sự trợ giúp của các ví dụ).

Giống như Java, abstracttừ khóa được sử dụng để khai báo các lớp trừu tượng trong Kotlin. Một lớp trừu tượng không thể được khởi tạo (bạn không thể tạo các đối tượng của một lớp trừu tượng). Tuy nhiên, bạn có thể kế thừa các lớp con từ chúng.

Các thành viên (thuộc tính và phương thức) của một lớp trừu tượng là không trừu tượng trừ khi bạn sử dụng abstracttừ khóa một cách rõ ràng để làm cho chúng trở nên trừu tượng. Hãy lấy một ví dụ:

 lớp trừu tượng Person (var age: Int = 40 fun displaySSN (ssn: Int) (println ("SSN của tôi là $ ssn.")) trừu tượng fun displayJob (description: String))

Đây,

  • một lớp trừu tượng Personđược tạo. Bạn không thể tạo các đối tượng của lớp.
  • lớp có tuổi thuộc tính không trừu tượng và phương thức không trừu tượng displaySSN(). Nếu bạn cần ghi đè các thành viên này trong lớp con, chúng phải được đánh dấu bằng opentừ khóa.
  • Lớp có một phương thức trừu tượng displayJob(). Nó không có bất kỳ triển khai nào và phải được ghi đè trong các lớp con của nó.

Lưu ý: Các lớp trừu tượng luôn mở. Bạn không cần phải sử dụng opentừ khóa một cách rõ ràng để kế thừa các lớp con từ chúng.

Ví dụ: Lớp và phương pháp trừu tượng Kotlin

 abstract class Person(name: String) ( init ( println("My name is $name.") ) fun displaySSN(ssn: Int) ( println("My SSN is $ssn.") ) abstract fun displayJob(description: String) ) class Teacher(name: String): Person(name) ( override fun displayJob(description: String) ( println(description) ) ) fun main(args: Array) ( val jack = Teacher("Jack Smith") jack.displayJob("I'm a mathematics teacher.") jack.displaySSN(23123) )

Khi bạn chạy chương trình, đầu ra sẽ là:

Tên tôi là Jack Smith. Tôi là một giáo viên toán học. SSN của tôi là 23123.

Ở đây, một lớp Teacherđược dẫn xuất từ ​​một lớp trừu tượng Person.

Một jack đối tượng của lớp Giáo viên được khởi tạo. Chúng tôi đã chuyển "Jack Smith"dưới dạng một tham số cho hàm tạo chính trong khi tạo nó. Điều này thực thi khối khởi tạo của Personlớp.

Sau đó, displayJob()phương thức được gọi là sử dụng đối tượng jack. Lưu ý rằng displayJob()phương thức được khai báo trừu tượng trong lớp cơ sở và được ghi đè trong lớp dẫn xuất.

Cuối cùng, displaySSN()phương thức được gọi là sử dụng đối tượng jack. Phương thức này không trừu tượng và được khai báo trong lớp Person (và không được khai báo trong Teacherlớp).

Đề xuất đọc: Kotlin Interfaces

Các giao diện Kotlin tương tự như các lớp trừu tượng. Tuy nhiên, các giao diện không thể lưu trữ trạng thái trong khi các lớp trừu tượng có thể.

Có nghĩa là, giao diện có thể có thuộc tính nhưng nó cần phải trừu tượng hoặc phải cung cấp các triển khai trình truy cập. Trong khi đó, không bắt buộc thuộc tính của một lớp trừu tượng là trừu tượng.

thú vị bài viết...