- vừa được xem lúc

[Object-Oriented + Java] Bài viết #4 - Abstract Class & Interface

0 0 10

Người đăng: Semi Dev

Theo Viblo Asia

Hai công cụ này thuộc về giai đoạn thiết kế tổng quan kiến trúc code trước khi bắt tay vào viết code triển khai chi tiết cho các class thông thường mà chúng ta đã biết trước đó.

Abstract Class

Được sử dụng cho hai mục đích:

1. Giảm thiểu lượng code lặp khi chúng ta có nhiều class khá giống nhau về lượng thuộc tính đặc tả và chức năng tương tác.

Ví dụ như trước đó chúng ta có các class mở rộng là WorkerTeacher cùng kế thừa lại các đặc tính của class Person. Trong trường hợp logic của chương trình không cần tạo object trực tiếp từ thao tác new Person() thì chúng ta có thể gắn từ khóa abstract vào phía trước từ khóa class trong định nghĩa của class Person.

Ví dụ:

package app.data; abstract class Person { // ...
}

2. Thiết lập thiết kế trừu tượng ở giai đoạn lên kế hoạch xây dựng phần mềm để làm cấu hình yêu cầu triển khai tính năng cho các class cụ thể sẽ được viết code ở giai đoạn sau đó.

Trong trường hợp này thì chúng ta có thể gắn thêm các từ khóa abstract cho các yếu tố class member bên trong abstract class, nhờ vậy thì ở giai đoạn thiết kế tổng quan này các phương thức sẽ có thể được khai báo tên ngắn gọn mà không cần viết code thể hiện logic hoạt động chi tiết. Sau đó, ở giai đoạn viết code triển khai, trình biên dịch sẽ đảm bảo rằng các tất cả yếu tố abstract sẽ phải được Override đầy đủ trong code định nghĩa của các class mở rộng.

Ví dụ:

package app.data; abstract class Person { abstract protected String name; abstract protected int age; Person (String $name, int $age) { this.setName ($name); this.setAge ($age); }; abstract protected void setName (String $name); abstract protected String getName (); abstract protected void setAge (int $age); abstract protected int getAge ();
}

Interface

Chỉ được sử dụng với mục đích thiết lập thiết kế trừu tượng ở giai đoạn lên kế hoạch xây dựng phần mềm, để làm cấu hình yêu cầu triển khai tính năng cho các class cụ thể. Thêm vào đó, từ inteface được Java sử dụng ở đây có ý nghĩa là giao diện tương tác, hay giao diện lập trình; Vì vậy nên các interface members sẽ chỉ có thể bao gồm các giá trị hằng và các phương thức abstract với từ khóa public luôn được ngầm định.

Ví dụ:

package app.delegate; public interface Greeter { final String VNmsg = "Xin chào"; final String ENmsg = "Hello"; greet (String $name);
}
package app.delegate; interface Seeker { meditate (int $time);
}

Và khi sử dụng các interface này cho một class không phải là abstract thì trình biên dịch sẽ đảm bảm bảo rằng class đó phải viết code Override đầy đủ cho tất cả các phương thức có mặt trong định nghĩa của các interface.

package app.delegate; class Worker
extends Person
implements Greeter, Seeker { // ...
}

(chưa đăng tải) [Object-Oriented + Java] Bài viết #5 - Generic Programming

Bình luận

Bài viết tương tự

- vừa được xem lúc

Closure trong Javascript - Phần 2: Định nghĩa và cách dùng

Các bạn có thể đọc qua phần 1 ở đây. Để mọi người không quên, mình xin tóm tắt gọn lại khái niệm lexical environment:.

0 0 51

- vừa được xem lúc

Var vs let vs const? Các cách khai báo biến và hằng trong Javascript

Dạo này mình tập tành học Javascript, thấy có 2 cách khai báo biến khác nhau nên đã tìm tòi sự khác biệt. Nay xin đăng lên đây để mọi người đọc xong hy vọng phân biệt được giữa let và var, và sau đó là khai báo hằng bằng const.

0 0 31

- vừa được xem lúc

VueJS: Tính năng Mixins

Chào mọi người, hôm nay mình sẽ viết về Mixins và 1 số vấn đề trong sử dụng Mixins hay ho mà mình gặp trong dự án thực. Trích dẫn từ trang chủ của VueJS:.

0 0 27

- vừa được xem lúc

Asset Pipeline là cái chi chi?

Asset Pipeline. Asset pipeline là cái chi chi. . Giải thích:.

0 0 47

- vừa được xem lúc

Tạo data table web app lấy dữ liệu từ Google Sheets sử dụng Apps Script

Google Sheets là công cụ tuyệt vời để lưu trữ bảng tính trực tuyến, bạn có thể truy cập bảng tính bất kỳ lúc nào ở bất kỳ đâu và luôn sẵn sàng để chia sẻ với người khác. Bài này gồm 2 phần.

0 0 266

- vừa được xem lúc

Học Deep Learning trên Coursera miễn phí

Bạn muốn bắt đầu với Deep Learning nhưng không biết bắt đầu từ đâu? Bạn muốn có một công việc ở mức fresher về Deep Learning? Bạn muốn khoe bạn bè về kiến thức Deep Learning của mình. Bắt đầu từ đâu.

0 0 35