Lớp học vs Cấu trúc
Một số khái niệm chính của ngôn ngữ lập trình hướng đối tượng (OO) là đóng gói, kế thừa và đa hình. Lớp và Cấu trúc là hai trong số các cấu trúc / công cụ OO, giúp các lập trình viên đạt được các khái niệm này trong hầu hết các ngôn ngữ lập trình OO đã thoát (Java không cung cấp cấu trúc). Các lớp học là một đại diện trừu tượng của các đối tượng trong thế giới thực. Các cấu trúc rất giống với các lớp có cách sử dụng tương tự, nhưng có một vài hạn chế so với các lớp. Cả hai lớp và cấu trúc được sử dụng để nhóm loại dữ liệu tương tự, cùng nhau.
Lớp học là gì?
Các lớp mô tả biểu diễn trừu tượng của các đối tượng trong thế giới thực, trong khi các mối quan hệ mô tả cách mỗi lớp được kết nối với các lớp khác. Cả hai lớp và các mối quan hệ có các thuộc tính được gọi là thuộc tính. Các phương thức trong các lớp đại diện hoặc định nghĩa hành vi của các lớp này. Các phương thức và thuộc tính của các lớp được gọi là các thành viên của lớp. Thông thường, đóng gói đạt được bằng cách đặt các thuộc tính riêng tư, đồng thời tạo các phương thức công khai có thể được sử dụng để truy cập các thuộc tính đó. Một đối tượng là ví dụ của một lớp. Kế thừa cho phép người dùng mở rộng các lớp (được gọi là lớp phụ) từ các lớp khác (được gọi là siêu lớp). Đa hình cho phép lập trình viên thay thế một đối tượng của một lớp thay cho một đối tượng của siêu lớp của nó. Thông thường, các danh từ tìm thấy trong định nghĩa vấn đề trực tiếp trở thành các lớp trong chương trình. Và tương tự, động từ trở thành phương thức. Công khai, riêng tư và được bảo vệ là các sửa đổi truy cập điển hình được sử dụng cho các lớp. Một sơ đồ lớp cho thấy các lớp của hệ thống, mối quan hệ giữa các lớp và các thuộc tính của chúng.
Cấu trúc là gì?
Như đã đề cập ở trên, các cấu trúc rất giống với các lớp có cách sử dụng tương tự, nhưng khả năng hơi hạn chế so với các lớp. Trong thực tế, các lớp có thể được coi là một phần mở rộng cho các cấu trúc. Ví dụ, các cấu trúc giống như các lớp trong C ++, nhưng chúng có các thành viên công khai theo mặc định. Một cấu trúc có thể được xác định bởi người dùng để thể hiện một loại là hỗn hợp. Tương tự như các lớp, cấu trúc chứa các thành viên có thể thuộc nhiều loại. Cấu trúc từ khóa được sử dụng để xác định cấu trúc trong C và C ++, trong khi Cấu trúc từ khóa được sử dụng cho cùng một ngôn ngữ lập trình .NET.
Sự khác biệt giữa các lớp và cấu trúc là gì?
Mặc dù, cả hai lớp và cấu trúc là các cấu trúc tương tự được tìm thấy trong các ngôn ngữ lập trình, chúng có những khác biệt tinh tế. Thông thường, lớp là một phần mở rộng của cấu trúc, và do đó các cấu trúc có một số hạn chế tương đối. Ví dụ, các cấu trúc có thể được coi là giống như các lớp trong C ++, nhưng các thành viên không được công khai theo mặc định trong các lớp (không giống như trong các cấu trúc). Điều này thực sự có nghĩa là bạn có thể định nghĩa một lớp và một cấu trúc với các đặc điểm chính xác giống nhau bằng cách sử dụng các công cụ sửa đổi truy cập thích hợp trong C ++. Tuy nhiên, trong C, cấu trúc không thể chứa bất kỳ chức năng hoặc hoạt động quá tải. Lớp từ khóa và struct được sử dụng để định nghĩa một lớp và cấu trúc trong C ++, tương ứng. Khi nói đến các ngôn ngữ .NET (C #, VB.NET, v.v.), lớp là một kiểu tham chiếu, trong khi cấu trúc là một loại giá trị. Và thông thường, các cấu trúc được sử dụng cho các đối tượng nhỏ hơn, nhưng các lớp được sử dụng cho các đối tượng lớn hơn được giữ trong bộ nhớ trong thời gian dài hơn.