-Bản chất của kết tập:Lớp toàn thể chứa đối tượng của lớp thành phần + Là một phần is-a-part of của lớp toàn thể + Tái sử dụng các thành phần dữ liệu và các hành vi của lớp thành ph
Trang 1=.= =.=
1 Phân biệt kết tập và kế thừa
- Kết tập: Tạo ra các đối tượng của các lớp có sẵn trong lớp
mới => thành viên của lớp mới Kết tập tái sử dụng thông qua đối tượng ( Has-A )
-Bản chất của kết tập:Lớp toàn thể chứa đối tượng của lớp thành phần + Là một phần (is-a-part of) của lớp toàn thể
+ Tái sử dụng các thành phần dữ liệu và các hành vi của lớp thành phần thông qua đối tượng thành phần
- Kế thừa: Tư tưởng của kế thừa trong java là có thể tạo ra một class mới được xây dựng, phát triển trên các lớp đang tồn tại Khi kế thừa từ một lớp đang tồn tại bạn có sử dụng lại các phương thức và thuộc tính của lớp cha, đồng thời có thể khai báo thêm các phương thức và thuộc tính khác
Ví dụ kết tập:
+ Tạo ra lớp Địa chỉ gồm tên đường, tên thành phố
Tiếp theo tạo ra lớp con người mỗi con người có một địa chỉ thì lúc này lớp địa chỉ đóng vai trò thuộc tính trong class con người
+ Tạo class Điểm, tạo tiếp class tứ giác, trong class tứ giác thì có 4 thuộc tính điểm
Ví dụ kế thừa: Lớp con người có thuộc tính public họ tên, ngày sinh, và phương thức public tinhTuoi()
Trang 2Lớp nhân viên kế thừa từ con người thì mặc định lớp nhân viên có luôn thuộc tính họ tên, ngày sinh, và phương thức tinhTuoi()
2 Phân biệt lập trình hướng cấu trúc và lập trình hướng đối tượng.
- Lập trình hướng cấu trúc hay còn gọi là lập trình hướng thủ tục
(Procedure Oriented Programming – POP): là một kỹ thuật lập trình, trong đó chương trình được chia thành các hàm (chương trình con)
- Lập trình hướng đối tượng (Object Oriented Programming – OOP): là một kỹ thuật lập trình, trong đó chương trình sẽ được chia ra thành các phần nhỏ được gọi là đối tượng (Object) Đối tượng trong lập trình hướng đối tượng sẽ tương ứng với các thực thể trong bài toán,
nó sẽ có các thuộc tính (attribute), các hành động (method).
+ OOP tập trung vào dữ liệu hơn là thuật toán, còn POP tập trung vào việc xây dựng các hàm, thuật toán hơn là dữ liệu
+ Chương trình OOP chia ra thành các đối tượng còn POP chia ra làm các hàm
+ Trong OOP các chức năng có thể chạy đồng thời còn trong POP thì các hàm các chức năng chạy lần lượt
+ Điểu khiển dữ liệu: Trong OOP thì dữ liệu và hàm của một đối tượng giống như một thành phần riêng biệt và bị hạn chế truy cập bởi các đối tượng khác Với POP , dữ liệu có thể truy cập một cách tự do giữa các hàm
+ OOP Bảo mật hơn POP nhờ việc giới hạn truy cập ( tính đóng gói ) + OOP dữ liệu có thể thêm mới một cách dễ dàng từ các đối tượng trong khi POP thì rất khó
3 Phân biệt các mức truy cập cho ví dụ
- Private: Chỉ có thể truy cập được khi trong cùng một class
Trang 3- Default: Có thể truy cập được ở trong cùng một class, các lớp con cùng package và các lớp không phải lớp con cùng gói ( khác gói thì không truy cập được) ( Nói ngắn gọn có thể truy cập trong cùng Package )
- Protected: Có thể truy cập trong cùng package và ở các lớp con khác
package
- Public: Có thể truy cập tùy ý ở đâu cũng được
- Bonus:
+ Các phương thức, biến và constructor mà được khai báo private chỉ
có thể được truy cập trong chính lớp được khai báo đó
+ Private Access Modifier là chế độ truy cập mang tính hạn chế nhất Lớp và interface không thể là private
+ Các thuộc tính khai báo private có thể truy cập được từ bên ngoài nếu
có các phương thức public geter seter
Trang 4+ Sử dụng Private Access Modifier trong Java là cách chủ yếu để một đối tượng bao đóng chính nó và ẩn dữ liệu với bên ngoài
4 Phân biệt interface và abstract class
- Giống nhau:
+ Abstract class class và interface đều bao gồm các phương thức abstract
+ Đều có thể kế implements từ nhiều interface
- Khác nhau:
Trang 5+ Interface không thể khai báo các thuộc tính, chỉ có thể khai báo các hằng số
+ Interface chỉ có thể khai báo các phương thức không có body ( thân hàm )
+ Interface không chứa constructor
+ Access modifier của interface chỉ có thể là public
+ Abstract class có thể chứa thuộc tính, phương thức có body,
constructor và có thể sử dụng các access modifier khác, riêng abstract method thì không được private
- Một class có thể implements nhiều interface và chỉ có thể extends 1 class or abstract class ( java không hỗ trợ đa kế thừa ).
- Ví dụ interface.
Trang 6- Ví dụ abstract class
Trang 75 Các nguyên lý cơ bản của lập trình hướng đối tượng.
- Tính đóng gói: Tức là trạng thái của đối tượng được bảo vệ không cho các truy cập từ bên ngoài như thay đổi trạng thái hay nhìn trực tiếp Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội
Trang 8tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người
viết mã Đây là tính chất đảm bảo sự toàn vẹn, bảo mật của đối tượng trong java, tính đóng gói được thể hiện qua phạm vi truy cập ( access modifier )
- Tính trừu tượng: là một tiến trình ẩn đi các chi tiết trình triển khai và chỉ hiển thị các tính năng tới người dùng Tính trừu tượng cho phép bạn loại bỏ tính chất phức tạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cần thiết của đối tượng lập trình Tính trừu tượng giúp bạn quan tâm đến cốt lõi cần thiết của đối tượng thay vì quan tâm đến cách nó thực hiện ( interface, abstract class)
- Tính đa hình: Khả năng của một đối tượng có thể được đại diện ( trỏ tới ) bởi các biến đối tượng khác nhau Các biến đối tượng ở đây có thể
là chính nó hoặc supper class trực thuộc phả hệ mà nó kế thừa Như vậy một đối tượng có thể mang nhiều hình dạng khác nhau ta gọi là tính
đa hình
- Tính kế thừa: Là khả năng thiết kế class được kế thừa lại class trước
đó để kế thừa lại một số hoặc toàn bộ các thuộc tính và phương thức của lớp cha và xác lập quan hệ kế thừa với lớp cha
6 Phân biệt super() và this()
- Từ khóa this trong java là một biến tham chiếu được sử dụng để tham chiếu tới đối tượng của lớp hiện tại.
- Từ khóa this có thể được dùng để tham chiếu tới biến instance( các thuộc tính) của lớp hiện tại
- this() có thể được dùng để gọi Constructor của lớp hiện tại
- Từ khóa this có thể được dùng để gọi phương thức của lớp hiện tại
Trang 9- Từ khóa this có thể được truyền như một tham số trong phương thức.
- Từ khóa this có thể được truyền như một tham số trong phương
Constructor
- Từ khóa this có thể được dùng để trả về instance của lớp hiện tại
- Từ khóa super trong java là một biến tham chiếu được sử dụng để tham chiếu trực tiếp đến đối tượng của lớp cha gần nhất.
- Từ khóa super được sử dụng để tham chiếu trực tiếp đến biến
instance của lớp cha gần nhất
- super() được sử dụng để gọi trực tiếp Constructor của lớp cha
- Từ khóa super được sử dụng để gọi trực tiếp phương thức của lớp cha
Ví dụ tổng quát, có thể lấy ví dụ dễ hơn :v