Wiki đặt nó rất chính xác
dữ liệu trừu tượng
dữ liệu trừu tượng thực thi một sự tách biệt rõ ràng giữa các tính chất trừu tượng của một kiểu dữ liệu và các chi tiết cụ thể của việc thực hiện. Các thuộc tính trừu tượng là các thuộc tính trừu tượng có thể nhìn thấy mã khách hàng sử dụng kiểu dữ liệu - giao diện cho kiểu dữ liệu - trong khi việc triển khai cụ thể được giữ hoàn toàn riêng tư và thực sự có thể thay đổi, ví dụ như kết hợp các cải tiến hiệu quả theo thời gian. Ý tưởng là những thay đổi như vậy không có nghĩa vụ phải có bất kỳ tác động nào đối với mã máy khách, vì chúng không liên quan đến sự khác biệt trong hành vi trừu tượng. Ví dụ: Ví dụ, người ta có thể định nghĩa một kiểu dữ liệu trừu tượng được gọi là bảng tra cứu kết hợp duy nhất các khóa với các giá trị, và trong đó các giá trị có thể được lấy ra bằng cách chỉ định các khóa tương ứng của chúng. Bảng tra cứu như vậy có thể được thực hiện theo nhiều cách khác nhau: dưới dạng bảng băm, cây tìm kiếm nhị phân hoặc thậm chí một danh sách tuyến tính đơn giản gồm các cặp (khóa: giá trị) đơn giản. Theo như mã khách hàng là có liên quan, các thuộc tính trừu tượng của loại là như nhau trong mỗi trường hợp.
Hãy xem xét ví dụ một đoạn Java mẫu để đại diện cho một số trang trại phổ biến "động vật" đến mức trừu tượng phù hợp để mô hình các khía cạnh đơn giản của nạn đói và cho ăn của chúng. Nó định nghĩa một lớp động vật để đại diện cho cả hai trạng thái của động vật và chức năng của nó:
public class Animal extends LivingThing
{
private Location loc;
private double energyReserves;
public boolean isHungry() {
return energyReserves < 2.5;
}
public void eat(Food f) {
// Consume food
energyReserves += f.getCalories();
}
public void moveTo(Location l) {
// Move to new location
loc = l;
}
}
Với định nghĩa trên, ta có thể tạo các đối tượng của loại động vật và gọi các phương thức của họ như thế này:
thePig = new Animal();
theCow = new Animal();
if (thePig.isHungry()) {
thePig.eat(tableScraps);
}
if (theCow.isHungry()) {
theCow.eat(grass);
}
theCow.moveTo(theBarn);
http://www.javacoffeebreak.com/faq/faq0084.html. –
@ crowso- bạn chưa satiesfied với câu trả lời chưa? Xin vui lòng chấp nhận một trong những câu trả lời –