Hướng dẫn Java cho người mới bắt đầu này mô tả các nguyên tắc cơ bản của lập trình bằng ngôn ngữ lập trình Java

Bạn đang xem: các phương thức lớp trừu tượng java

Đường mòn: Học ngôn ngữ Java

Bài học: Giao diện và Kế thừa

Phần: Kế thừa

Các Hướng dẫn Java đã được viết cho JDK 8. Các ví dụ và thực hành được mô tả trong trang này không tận dụng được các cải tiến được giới thiệu trong các phiên bản sau và có thể sử dụng công nghệ không còn nữa. Xem Thay đổi ngôn ngữ Java để biết tóm tắt về các tính năng ngôn ngữ được cập nhật trong Java SE 9 và các bản phát hành tiếp theo. Xem Ghi chú phát hành JDK để biết thông tin về các tính năng mới, cải tiến và các tùy chọn bị loại bỏ hoặc không dùng nữa cho tất cả các bản phát hành JDK.

Các phương pháp và lớp tóm tắt

< p> An là một lớp được khai báo abstract — nó có thể bao gồm hoặc không bao gồm các phương thức trừu tượng. Không thể khởi tạo các lớp trừu tượng, nhưng chúng có thể được phân lớp.

An là một phương thức được khai báo mà không có triển khai (không có dấu ngoặc nhọn và theo sau là dấu chấm phẩy), như sau:

trừu tượng void moveTo (double deltaX, double deltaY);

Nếu một lớp bao gồm các phương thức trừu tượng, thì bản thân lớp đó sẽ được khai báo abstract , như trong:

public trừu tượng lớp GraphicObject {
   // khai báo các trường
   // khai báo các phương thức nonabstract
   trừu tượng void draw ();
}

Khi một lớp trừu tượng được phân lớp, lớp con thường cung cấp các triển khai cho tất cả các phương thức trừu tượng trong lớp cha của nó. Tuy nhiên, nếu không, thì lớp con cũng phải được khai báo abstract .

Lưu ý: Các phương thức trong một (xem
trừu tượng, vì vậy công cụ sửa đổi abstract không được sử dụng với các phương thức giao diện. (Nó có thể được sử dụng, nhưng nó là không cần thiết.)

Các phương thức trong một (xem phần Interfaces ) không được khai báo là areabstract tĩnh hoặc mặc định, do đó, phương thức này không được sử dụng với các phương thức giao diện. (Nó có thể được sử dụng, nhưng nó là không cần thiết.)

Các lớp trừu tượng tương tự như các giao diện. Bạn không thể khởi tạo chúng và chúng có thể chứa hỗn hợp các phương thức được khai báo có hoặc không có triển khai. Tuy nhiên, với các lớp trừu tượng, bạn có thể khai báo các trường không phải là trường tĩnh và cuối cùng, đồng thời xác định các phương thức cụ thể công khai, bảo vệ và riêng tư. Với giao diện, tất cả các trường tự động là công khai, tĩnh và cuối cùng và tất cả các phương thức mà bạn khai báo hoặc xác định (làm phương thức mặc định) đều là công khai. Ngoài ra, bạn chỉ có thể mở rộng một lớp, cho dù nó có trừu tượng hay không, trong khi bạn có thể triển khai bất kỳ số lượng giao diện nào.

Xem Thêm  Thẻ phông chữ trong HTML - thẻ phông chữ là gì

Bạn nên sử dụng cái nào, lớp hay giao diện trừu tượng?

  • Cân nhắc sử dụng các lớp trừu tượng nếu bất kỳ câu lệnh nào sau đây áp dụng cho trường hợp của bạn:
    • Bạn muốn chia sẻ mã giữa một số lớp có liên quan chặt chẽ với nhau.
    • Bạn mong đợi rằng các lớp mở rộng lớp trừu tượng của bạn có nhiều phương thức hoặc trường phổ biến hoặc yêu cầu các công cụ sửa đổi quyền truy cập không phải là công khai (chẳng hạn như được bảo vệ và riêng tư).
    • Bạn muốn khai báo các trường không phải là trường tĩnh hoặc không phải là trường cuối cùng. Điều này cho phép bạn xác định các phương thức có thể truy cập và sửa đổi trạng thái của đối tượng mà chúng thuộc về.
  • Cân nhắc sử dụng các giao diện nếu bất kỳ tuyên bố nào sau đây áp dụng cho trường hợp của bạn:
    • Bạn mong đợi rằng các lớp không liên quan sẽ triển khai giao diện của bạn. Ví dụ, các giao diện
      Có thể so sánh
      Có thể sao chép được nhiều lớp không liên quan triển khai.
    • Bạn muốn chỉ định hành vi của một loại dữ liệu cụ thể, nhưng không quan tâm đến việc ai thực hiện hành vi của nó.
    • Bạn muốn tận dụng kiểu đa kế thừa.

Một ví dụ về lớp trừu tượng trong JDK là
AbstractMap , là một phần của Khung tập hợp. Các lớp con của nó (bao gồm HashMap , TreeMap ConcurrentHashMap ) chia sẻ nhiều phương thức (bao gồm get , đặt , isEmpty , chứaKey chứaValue ) mà AbstractMap định nghĩa.

Ví dụ về một lớp trong JDK triển khai một số giao diện là
HashMap , triển khai các giao diện Serializable , Cloneable và < mã> Bản đồ & lt; K, V & gt; . Bằng cách đọc danh sách các giao diện này, bạn có thể suy ra rằng một bản sao của HashMap (bất kể nhà phát triển hoặc công ty đã triển khai lớp) có thể được nhân bản, có thể tuần tự hóa (có nghĩa là nó có thể được chuyển đổi thành một luồng byte;
xem phần
Đối tượng có thể sắp xếp theo thứ tự ) và có chức năng của một bản đồ. Ngoài ra, giao diện Map & lt; K, V & gt; đã được cải tiến với nhiều phương thức mặc định như merge forEach mà các lớp cũ đã triển khai giao diện này không cần phải xác định.

Xem Thêm  Cách lấy N hàng trên cùng bằng Oracle SQL. - chọn 10 hàng trên cùng trong oracle

Lưu ý rằng nhiều thư viện phần mềm sử dụng cả các lớp và giao diện trừu tượng; lớp HashMap triển khai một số giao diện và cũng mở rộng lớp trừu tượng AbstractMap .

Ví dụ về lớp trừu tượng

Trong ứng dụng vẽ hướng đối tượng, bạn có thể vẽ hình tròn, hình chữ nhật, đường thẳng, đường cong Bezier và nhiều đối tượng đồ họa khác. Tất cả các đối tượng này đều có một số trạng thái nhất định (ví dụ: vị trí, hướng, màu đường, màu tô) và các hành vi (ví dụ: moveTo, xoay, thay đổi kích thước, vẽ). Một số trạng thái và hành vi này giống nhau đối với tất cả các đối tượng đồ họa (ví dụ: vị trí, màu tô và chuyển sang). Những người khác yêu cầu triển khai khác nhau (ví dụ: thay đổi kích thước hoặc vẽ). Tất cả các GraphicObject phải có thể tự vẽ hoặc thay đổi kích thước; họ chỉ khác nhau về cách họ làm điều đó. Đây là một tình huống hoàn hảo cho một lớp cha trừu tượng. Bạn có thể tận dụng những điểm tương đồng và khai báo tất cả các đối tượng đồ họa để kế thừa từ cùng một đối tượng gốc trừu tượng (ví dụ: GraphicObject ) như được hiển thị trong
hình sau.

Kế thừa các lớp Hình chữ nhật, Đường thẳng, Bezier và Vòng tròn từ GraphicObject

Đầu tiên, bạn khai báo một lớp trừu tượng, GraphicObject , để cung cấp các biến và phương thức thành viên được chia sẻ hoàn toàn bởi tất cả các lớp con, chẳng hạn như vị trí hiện tại và phương thức moveTo . GraphicObject cũng khai báo các phương thức trừu tượng cho các phương thức, chẳng hạn như draw hoặc resize , cần được triển khai bởi tất cả các lớp con nhưng phải được triển khai theo các cách khác nhau . Lớp GraphicObject có thể trông giống như sau:

lớp trừu tượng GraphicObject {
    int x, y;
    ...
    void moveTo (int newX, int newY) {
        ...
    }
    trừu tượng void draw ();
    trừu tượng void resize ();
}

Mỗi lớp con nonabstract của GraphicObject , chẳng hạn như Circle Rectangle , phải cung cấp triển khai cho draw < / code> và thay đổi kích thước phương pháp:

class Circle mở rộng GraphicObject {
    void draw () {
        ...
    }
    void resize () {
        ...
    }
}
lớp Hình chữ nhật mở rộng GraphicObject {
    void draw () {
        ...
    }
    void resize () {
        ...
    }
}

Khi một lớp trừu tượng triển khai một giao diện

Trong phần trên
Interfaces , cần lưu ý rằng một lớp triển khai một giao diện phải triển khai các phương thức của giao diện. Tuy nhiên, có thể xác định một lớp không triển khai tất cả các phương thức của giao diện, với điều kiện lớp đó được khai báo là abstract . Ví dụ:

lớp trừu tượng X thực hiện Y {
  // thực hiện tất cả trừ một phương thức của Y
}

lớp XX mở rộng X {
  // thực thi phương thức còn lại trong Y
}

Trong trường hợp này, lớp X phải là abstract vì nó không triển khai đầy đủ Y , mà là lớp Trên thực tế, XX có triển khai Y .

Các thành viên trong lớp

Một lớp trừu tượng có thể có các trường static và phương thức static . Bạn có thể sử dụng các thành viên tĩnh này với tham chiếu lớp (ví dụ: AbstractClass.staticMethod () ) như cách bạn làm với bất kỳ lớp nào khác.


Xem thêm những thông tin liên quan đến chủ đề các phương thức lớp trừu tượng java

Bài tập lớp trừu tượng (Quản lý danh sách hình bất kỳ)

  • Tác giả: Thanh Duong Huu
  • Ngày đăng: 2021-05-12
  • Đánh giá: 4 ⭐ ( 7399 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ôn tập lập trình OOP

Phương thức và lớp trừu tượng trong Java

  • Tác giả: codefly.vn
  • Đánh giá: 3 ⭐ ( 7950 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

[Java Core] Lớp trừu tượng Java và các phương thức

  • Tác giả: www.codelean.vn
  • Đánh giá: 4 ⭐ ( 1287 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: CodeLean.vn là nơi chia sẻ kiến thức của những người học, làm và dạy trong lĩnh vực công nghệ thông tin.

Phương thức trừu tượng

  • Tác giả: hocjava.com
  • Đánh giá: 3 ⭐ ( 4111 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Lớp và phương thức trừu trượng (Abstract) trong Java

  • Tác giả: quachquynh.com
  • Đánh giá: 4 ⭐ ( 2593 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Lớp trừu tượng (abstract class) trong Java

  • Tác giả: gochocit.com
  • Đánh giá: 5 ⭐ ( 7309 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lớp trừu tượng (abstract class) trong Java. Lớp trừu tượng (abstract class) không thể tạo ra các đối tượng. Phương thức trừu tượng (abstract method).

155 bài học Java miễn phí hay nhất

  • Tác giả: vietjack.com
  • Đánh giá: 4 ⭐ ( 6010 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lớp trừu tượng - Abstract Class trong Java - Học Java cơ bản và nâng cao cho người mới học về Ngôn ngữ hướng đối tượng, Ví dụ Java, Phương thức, Ghi đè, Tính kế thừa, Tính trừu tượng, Tính đa hình, Overriding, Inheritance, Polymorphism, Interfaces, Packages, Collections, Lập trình mạng, Đa luồng, Tuần tự hóa, Networking, Multithreading, Generics, Multimedia, Serialization, GUI.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php