Sự khác biệt giữa Giao diện và Lớp trừu tượng trong Java

Sự khác biệt chính: Giao diện hoặc giao thức là một cách phổ biến cho phép các đối tượng không liên quan giao tiếp với nhau. Nó đại diện cho một hành vi đã thỏa thuận tạo điều kiện cho sự tương tác giữa hai đối tượng. Một lớp trừu tượng là một lớp các đối tượng không thể khởi tạo hoặc thiết lập một thể hiện của một đối tượng. Lớp này có thể không có triển khai hoặc có thể có thực hiện không đầy đủ.

Java, C ++, C # đều là những ngôn ngữ lập trình phức tạp đòi hỏi phải nghiên cứu và hiểu biết chi tiết để có thể làm việc với. Có nhiều phương pháp khác nhau được sử dụng trong các ngôn ngữ này quyết định cách thức ngôn ngữ sẽ hoạt động. Giao diện và Lớp trừu tượng là hai khái niệm khó hiểu là một phần của OOP (lập trình hướng đối tượng). Hai cái này có thể được sử dụng riêng lẻ hoặc cùng với nhau. Hai cái này hoàn toàn khác nhau và được sử dụng trong các trường hợp khác nhau.

Java là ngôn ngữ lập trình, chịu ảnh hưởng của ngôn ngữ C. Nó lấy được phần lớn cú pháp của nó từ C và C ++, tuy nhiên nó có ít phương tiện cấp thấp hơn. Java là ngôn ngữ lập trình có mục đích chung được thiết kế để có ít phụ thuộc thực hiện hơn so với các ngôn ngữ trước đó. Nó là đồng thời, dựa trên lớp và một ngôn ngữ hướng đối tượng.

Java được phát triển bởi James Gosling tại Sun microsystems và được phát hành vào năm 1995. Ban đầu nó được phát hành như một thành phần cốt lõi của nền tảng Java của Sun microsystems. Sun đã cấp phép lại hầu hết các công nghệ Java của mình theo Giấy phép Công cộng GNU. Điều này có nghĩa là tất cả các công nghệ được cấp phép theo Giấy phép Công cộng GNU là nguồn mở và thường có sẵn miễn phí. Sun microsystems cuối cùng đã sáp nhập vào Tập đoàn Oracle. Kể từ năm 2012, Java đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất để sử dụng. Điều này đặc biệt đúng đối với các ứng dụng web của máy khách-máy chủ. Nhiều hệ thống khác đã phát triển các triển khai thay thế công nghệ Sun, như Trình biên dịch GNU cho Java và GNU Classpath.

Giao diện hoặc giao thức là một cách phổ biến cho phép các đối tượng không liên quan giao tiếp với nhau. Nó đại diện cho một hành vi đã thỏa thuận tạo điều kiện cho sự tương tác giữa hai đối tượng. Giao diện giữ chìa khóa cho các hành động khác nhau đang được thực hiện và phục vụ như một liên kết giữa hai đối tượng khác nhau. Nếu một lớp đối tượng được tiếp xúc với giao diện, lớp đó sẽ phải tuân theo hành vi được thực hiện bởi giao diện. Thông thường, các giao diện chỉ chứa các khai báo không đổi và chữ ký phương thức. Bất kỳ giao diện nào thực hiện một giao diện cụ thể, phải áp dụng tất cả các phương thức được đề cập trong giao diện hoặc được khai báo là một lớp trừu tượng. Trong Java, bất kỳ đối tượng nào cũng có thể được định nghĩa là một giao diện, nếu đối tượng đó là null hoặc giữ một lớp trong đó nó thực hiện giao diện cụ thể đó. Người ta có thể triển khai nhiều giao diện cho một lớp duy nhất trong Java bằng cách sử dụng các từ khóa hiện thực.

Một lớp trừu tượng là một lớp các đối tượng không thể khởi tạo hoặc thiết lập một thể hiện của một đối tượng. Lớp này có thể không có triển khai hoặc có thể có thực hiện không đầy đủ. Nó cũng có thể có các phương thức hoặc thuộc tính trừu tượng được chia sẻ bởi tất cả các lớp con. Trong một số ngôn ngữ lập trình, các loại trừu tượng không có triển khai được gọi là giao diện. Trong Java, một loại trừu tượng có thể được tạo bằng cách sử dụng từ khóa 'trừu tượng' trong định nghĩa lớp. Mục đích của việc có một lớp trừu tượng để đặt tất cả các phương thức không được triển khai trong lớp trừu tượng và để nó cho lớp con để xác định cách thực hiện các lớp này. Nếu một lớp có một phương thức trừu tượng duy nhất, thì lớp đó phải được khai báo là một lớp trừu tượng, mặc dù người ta không cần phải có ít nhất một phương thức duy nhất để khai báo một lớp trừu tượng.

Malliktalksjava.in liệt kê những khác biệt chính giữa giao diện và trừu tượng như:

  • Lớp trừu tượng có hàm tạo, nhưng giao diện thì không.
  • Các lớp trừu tượng có thể có các triển khai cho một số thành viên của nó (Phương thức), nhưng giao diện không thể có triển khai cho bất kỳ thành viên nào của nó.
  • Các lớp trừu tượng nên có các lớp con khác sẽ vô dụng.
  • Các giao diện phải có sự triển khai của các lớp khác sẽ vô dụng
  • Chỉ một giao diện có thể mở rộng giao diện khác, nhưng bất kỳ lớp nào cũng có thể mở rộng một lớp trừu tượng.
  • Tất cả các biến trong giao diện là cuối cùng theo mặc định
  • Các giao diện cung cấp một hình thức thừa kế nhiều. Một lớp chỉ có thể mở rộng một lớp khác.
  • Các giao diện được giới hạn trong các phương thức công cộng và hằng số không có triển khai. Các lớp trừu tượng có thể có một phần thực hiện, các phần được bảo vệ, các phương thức tĩnh, v.v.
  • Một lớp có thể thực hiện một số giao diện. Nhưng trong trường hợp của lớp trừu tượng, một lớp chỉ có thể mở rộng một lớp trừu tượng.
  • Các giao diện chậm vì nó đòi hỏi thêm sự tìm kiếm để tìm phương thức tương ứng trong lớp thực tế. Các lớp trừu tượng là nhanh chóng.
  • Công cụ sửa đổi khả năng truy cập (Công khai / Riêng tư / nội bộ) được phép cho lớp trừu tượng. Giao diện không cho phép sửa đổi khả năng truy cập
  • Một lớp trừu tượng có thể chứa các phương thức đầy đủ hoặc không đầy đủ. Các giao diện chỉ có thể chứa chữ ký của một phương thức nhưng không có phần thân. Do đó, một lớp trừu tượng có thể thực hiện các phương thức nhưng một giao diện không thể thực hiện các phương thức.
  • Một lớp trừu tượng có thể chứa các trường, hàm tạo hoặc hàm hủy và các thuộc tính thực hiện. Một giao diện không thể chứa các trường, hàm tạo hoặc hàm hủy và nó chỉ có chữ ký của thuộc tính nhưng không có triển khai.
  • Các công cụ sửa đổi truy cập khác nhau như trừu tượng, được bảo vệ, nội bộ, công cộng, ảo, v.v ... rất hữu ích trong các Lớp trừu tượng nhưng không có trong các giao diện.
  • Phạm vi trừu tượng là lên đến lớp dẫn xuất.
  • Phạm vi giao diện lên đến bất kỳ cấp nào của chuỗi thừa kế của nó.

Thông tin cho bảng là phép lịch sự của codeproject.com và mindprod.com

Giao diện

Lớp trừu tượng

Đa thừa kế

Một lớp có thể kế thừa một số giao diện.

Một lớp chỉ có thể kế thừa một lớp trừu tượng.

Thực hiện mặc định

Một giao diện không thể cung cấp bất kỳ mã nào, chỉ có chữ ký.

Một lớp trừu tượng có thể cung cấp đầy đủ, mã mặc định và / hoặc chỉ các chi tiết phải được ghi đè.

Bộ điều chỉnh truy cập

Một giao diện không thể có các sửa đổi truy cập cho các mục phụ, chức năng, thuộc tính, v.v ... mọi thứ đều được coi là công khai.

Một lớp trừu tượng có thể chứa các sửa đổi truy cập cho các lớp con, hàm, thuộc tính.

Lõi so với ngoại vi

Các giao diện được sử dụng để xác định các khả năng ngoại vi của một lớp. Nói cách khác, cả Người và Xe đều có thể kế thừa từ giao diện IMovable.

Một lớp trừu tượng định nghĩa danh tính cốt lõi của một lớp và ở đó nó được sử dụng cho các đối tượng cùng loại.

Tính đồng nhất

Nếu các triển khai khác nhau chỉ chia sẻ chữ ký phương thức thì tốt hơn là sử dụng Giao diện.

Nếu các triển khai khác nhau là cùng loại và sử dụng hành vi hoặc trạng thái chung thì lớp trừu tượng sẽ tốt hơn để sử dụng.

Tốc độ

Yêu cầu nhiều thời gian hơn để tìm phương thức thực tế trong các lớp tương ứng.

Nhanh

Thêm chức năng

Nếu chúng ta thêm một phương thức mới vào Giao diện thì chúng ta phải theo dõi tất cả các triển khai của giao diện và xác định việc thực hiện cho phương thức mới.

Nếu chúng ta thêm một phương thức mới vào một lớp trừu tượng thì chúng ta có tùy chọn cung cấp triển khai mặc định và do đó tất cả các mã hiện có có thể hoạt động đúng.

Các lĩnh vực và hằng số

Không có trường nào có thể được định nghĩa trong giao diện.

Một lớp trừu tượng có thể có các trường và hằng được định nghĩa.

Khó chịu

Các khai báo không đổi trong một giao diện đều được coi là cuối cùng tĩnh công khai.

Mã chia sẻ có thể được thêm vào một lớp trừu tượng.

Hằng số

Các hằng số tĩnh cuối cùng, chỉ có thể sử dụng chúng mà không cần bằng cấp trong các lớp thực hiện giao diện.

Cả hai thể hiện và hằng số tĩnh đều có thể. Cả mã intialiser tĩnh và cá thể cũng có thể tính toán các hằng số.

Thuận tiện cho bên thứ ba

Việc triển khai giao diện có thể được thêm vào bất kỳ lớp bên thứ ba nào hiện có.

Một lớp bên thứ ba phải được viết lại để chỉ mở rộng từ lớp trừu tượng.

là một so với-có thể hoặc có thể làm

Các giao diện thường được sử dụng để mô tả các khả năng ngoại vi của một lớp, chứ không phải danh tính trung tâm của nó, ví dụ: Một lớp Ô tô có thể thực hiện giao diện Tái chế, có thể áp dụng cho nhiều đối tượng hoàn toàn không liên quan.

Một lớp trừu tượng xác định danh tính cốt lõi của con cháu của nó. Các giao diện được triển khai liệt kê những điều chung mà một lớp có thể làm, không phải những thứ mà một lớp là.

Trong ngữ cảnh Java, người dùng thường nên triển khai giao diện Runnable thay vì mở rộng Thread, vì họ không thực sự quan tâm đến việc cung cấp một số chức năng Thread mới, thông thường họ chỉ muốn một số mã có khả năng chạy độc lập. Họ muốn tạo ra một cái gì đó có thể chạy trong một luồng, không phải là một loại luồng mới. Tương tự is-a vs. has-a tranh luận xuất hiện khi bạn quyết định kế thừa hoặc ủy quyền.

Cắm vào

Người dùng có thể viết một mô-đun thay thế mới cho một giao diện không chứa một mã chung nào với các triển khai hiện có. Khi người dùng thực hiện giao diện, họ bắt đầu từ đầu mà không có bất kỳ triển khai mặc định nào. Người dùng phải có được các công cụ từ các lớp khác; không có gì đi kèm với giao diện ngoài một vài hằng số. Điều này cho phép người dùng tự do thực hiện một thiết kế bên trong hoàn toàn khác.

Người dùng phải sử dụng lớp trừu tượng như đối với cơ sở mã, với tất cả hành lý tiếp viên của nó, tốt hay xấu. Các tác giả lớp trừu tượng đã áp đặt cấu trúc trên người dùng.

Bảo trì

Nếu mã máy khách chỉ nói về giao diện, bạn có thể dễ dàng thay đổi triển khai cụ thể đằng sau nó, bằng phương thức xuất xưởng.

Nếu mã máy khách chỉ nói về một lớp trừu tượng, bạn có thể dễ dàng thay đổi việc triển khai cụ thể đằng sau nó, bằng cách sử dụng một phương thức xuất xưởng.

Đề XuấT

Bài ViếT Liên Quan

  • so sánh phổ biến: Sự khác biệt giữa mẫu giáo và Montessori

    Sự khác biệt giữa mẫu giáo và Montessori

    Sự khác biệt chính: Cả Mẫu giáo và Montessori đều tập trung vào việc cung cấp giáo dục cơ bản cho trẻ em, trước khi chúng bắt đầu đi học chính thức. Sự khác biệt giữa họ nằm ở phương pháp truyền đạt giáo dục của họ. Trường mẫu giáo có xu hướng làm cho việc học trở nên thú vị và dễ chịu cho trẻ em, trong khi một Montessori cố gắng nuôi dưỡng thói quen học tập tự nhiên ở chúng. Mẫu giáo có nghĩa là một khóa học được triển khai cho trẻ em từ ba đến năm tuổi. Các kỹ thuật giáo dục trong trường mẫu
  • so sánh phổ biến: Sự khác biệt giữa Natri và Muối

    Sự khác biệt giữa Natri và Muối

    Sự khác biệt chính: Natri là một kim loại mềm, màu trắng bạc và có tính phản ứng cao và là thành viên của kim loại kiềm. Muối, còn được gọi là muối đá hoặc muối ăn là một khoáng chất kết tinh được hình thành bởi sự kết hợp của natri và clorua. Muối được tạo thành từ khoảng 40% natri và 60% clorua. Natri và muối có liên
  • so sánh phổ biến: Sự khác biệt giữa FreeBSD và OpenBSD

    Sự khác biệt giữa FreeBSD và OpenBSD

    Sự khác biệt chính: FreeBSD và OpenBSD là hai hệ điều hành giống như Unix. Các hệ thống này dựa trên loạt biến thể Unix của BSD (Berkeley Software Distribution). FreeBSD đã được thiết kế nhằm vào yếu tố hiệu suất. Mặt khác, OpenBSD tập trung nhiều hơn vào tính năng bảo mật. FreeBSD và OpenBSD là hai hệ điều hành giống như Unix. Các hệ thống
  • so sánh phổ biến: Sự khác biệt giữa ngữ âm, ngữ âm và âm vị

    Sự khác biệt giữa ngữ âm, ngữ âm và âm vị

    Sự khác biệt chính: Phonics là một phương pháp trong đó các chữ cái được liên kết với âm thanh. Nó được coi là một phần rất quan trọng của việc dạy học là kỹ năng đọc. Ngữ âm đề cập đến một nhánh của ngôn ngữ học và nó liên quan đến nghiên cứu khoa học thích hợp về âm thanh liên quan đến lời nói của con người. Do đó, ngữ âm có thể được coi là một hình thức ngữ âm đơn giản hóa. Âm vị dùng để chỉ đơn vị ngữ âm nhỏ n
  • so sánh phổ biến: Sự khác biệt giữa Doberman và Rottweiler

    Sự khác biệt giữa Doberman và Rottweiler

    Sự khác biệt chính: Cả Doberman và Rottweiler đều là những giống chó thông minh nhất và được lai tạo để bảo vệ. Doberman rất thông minh, thận trọng, có kỹ năng linh hoạt và là người bạn đồng hành trung thành. Mặt khác, Rottweiler rất tận tụy, ngoan ngoãn và hăng say làm việc. Doberman và Rottweiler là hai giống chó khác nhau. Cả hai đều có nguồn gố
  • so sánh phổ biến: Sự khác biệt giữa Varchar và Varchar2

    Sự khác biệt giữa Varchar và Varchar2

    Sự khác biệt chính: Varchar và Varchar2 là hai kiểu dữ liệu trong Oracle. Varchar là viết tắt của chuỗi ký tự có độ dài thay đổi. Chúng được sử dụng để lưu trữ chuỗi. Varchar2 có thể lưu trữ một chuỗi ký tự có độ dài thay đổi với giới hạn trên là 4000 byte. Varar giống như Varchar2. Tuy nhiên, nó đã được lên kế hoạch để được xác định
  • so sánh phổ biến: Sự khác biệt giữa Vintage và Antique

    Sự khác biệt giữa Vintage và Antique

    Sự khác biệt chính: Thông thường, thuật ngữ cổ điển và cổ được sử dụng thay thế cho nhau, nhưng theo cách rộng hơn, chúng phân loại những thứ khác nhau, nghĩa là thuật ngữ 'cổ điển' được sử dụng cho những thứ cũ hơn một thập kỷ hoặc thời đại, trong khi thuật ngữ 'cổ' là được sử dụng cho những thứ đã 100 tuổi hoặc lịch sử cũ. Các thuật ngữ 'cổ' và 'cổ điển' thường đề cập đến những thứ cũ hoặc những thứ không hiện đại hoặ
  • so sánh phổ biến: Sự khác biệt giữa Thơ và Sonnet

    Sự khác biệt giữa Thơ và Sonnet

    Sự khác biệt chính : Bài thơ là một sáng tác văn học được tạo ra từ sự sắp xếp các từ tạo thành các dòng nhịp điệu trong khi Sonnet là một loại bài thơ cụ thể có 14 dòng và một sơ đồ gieo vần nghiêm ngặt. Thơ là một từ có nguồn gốc từ Hy Lạp có nghĩa là thành ra, để tạo ra. Một bài thơ có thể được mô tả như là một thứ gì đó được tạo ra hoặc tạo ra. Một bài thơ là
  • so sánh phổ biến: Sự khác biệt giữa Ampe kế và Vôn kế

    Sự khác biệt giữa Ampe kế và Vôn kế

    Sự khác biệt chính: Ampe kế là một dụng cụ được sử dụng để đo dòng điện trong mạch. Vôn kế là một dụng cụ được sử dụng để đo điện áp giữa hai điểm trong mạch. Có hai cách khác nhau để đo điện; dòng điện và điện áp. Các thiết bị như ampe kế và vôn kế, dựa trên điện kế, một thiết bị được sử dụng để phát hiện dòng điện nhỏ, được sử dụng để đo điện. Trong khi ampe kế được sử dụng để đo dòng điện, vôn kế được sử dụng để đo điện áp. Cả hai thiết bị đều khác nhau về chức năng và vị trí mạch. Am

Editor Choice

Sự khác biệt giữa HeartGold và SoulSilver

Điểm khác biệt chính: HeartGold và SoulSilver là những trò chơi video nhập vai cho Nintendo DS dựa trên nhượng quyền Pokémon. Chúng được phát hành như một cặp vào năm 2009 tại Nhật Bản. Các trò chơi đã được phát hành tới Bắc Mỹ, Úc và Châu Âu vào tháng 3 năm 2010. Người chơi sẽ bắt gặp các cô gái mặc kimono trong suốt trò chơi. S