4 tính chất đặc thù trong lập trình hướng đối tượng

Tính đóng gói

Khái niệm

Đóng gói là sự che giấu bên trong dữ liệu riêng của mỗi đối tượng của lớp được khai báo và chỉ được truy xuất chúng thông qua các phương thức có sẵn của lớp đó. Vì vậy, nó còn được gọi là data hiding (nghĩa là che giấu dữ liệu).

Access modifier


Private Access Modifier chỉ được truy cập trong phạm vi lớp. Default Access Modifier là chỉ được phép truy cập trong cùng package. Protected access modifier được truy cập bên trong package và bên ngoài package nhưng phải kế thừa. Protected access modifier có thể được áp dụng cho biến, phương thức, constructor. Nó không thể áp dụng cho lớp. Public access modifier được truy cập ở mọi nơi.

Tính trừu tượng

Tính trừu tượng là một tiến trình ẩn các chi tiết trình triển khai và chỉ hiển thị tính năng tới người dùng Abstract class là một lớp mà nó được khai báo bằng từ khóa abstract Có thể hoặc không có phương thức ảo (abstract method) Abstract không được khai báo nhưng có thể là một lớp con Một phương thức trừu tượng là một phương thức được khai báo mà không cần thực hiện (không có dấu ngoặc ôm và tiếp theo là dấu chấm phẩy), như thế này

123 abstract 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ì chính lớp đó phải được khai báo trừu tượng, như sau:

1234567 public abstract class GraphicObject {   // declare fields   // declare nonabstract methods   abstract void draw();} 

Khi lớp trừu tượng là một subclass thì lớp đó thường cung cấp các phương thức để thực thi tất cả phương thức trừu tượng của lớp cha. Nếu không class con phải được khai báo là abstract Phân biệt abstract class và interface

Tính kế thừa

Khái niệm

Lập trình hướng đối tượng cho phép định nghĩa một lớp mới từ một lớp đã tồn tại được gọi là tính kế thừa trong Java. Tính kế thừa là rất quan trọng và có tính năng mạnh mẽ trong việc tái sử dụng phần mềm Giả sử bạn cần định nghĩa một lớp là các mẫu hình tròn,hình vuông, hình tam giác. Những lớp đó có nhiều tính năng chung. Cách tốt nhất để thiết kế những lớp đó để tránh dư thừa và làm hệ thống trở nên dễ hiểu, dễ bảo trì là sử dụng tính kế thừa trong java. (Xem thêm về lập trình Java)

Superclass và Subclass

Tính kế thừa cho phép bạn định nghĩa một lớp chung (SuperClass) và sau đó kế thừa nó để có nhiều lớp chuyên biệt hơn (subclass) Có thể sử dụng một lớp để mô hình hóa các đối tượng là cùng kiểu
Các lớp khác nhau có thể có một vài thuộc tính chung và trạng thái, chúng có thể tổng quat bên trong một lớp và có thể chia sẻ cho các lớp khác. Hoàn toàn có thể định nghĩa các lớp chuyên biệt kế thừa từ lớp chung
Lớp chuyên biệt sẽ được kế thừa các thuộc tính và phương thức của lớp chung
ví dụ :
xem xét các đối tượng hình học. Giả sử bạn muốn thiết kế lớp là các đối tượng hình học chẳng hạn như hình tròn, hình chữ nhật. Đối tượng hình học có thể có các thuộc tính, trạng thái chung, chúng có thể là color, filled or unfilled. Lớp chung GeometricObject được sử dụng cho tất cả các đối tượng hình học. đây là một lớp chứa thuộc tính color, filled và các phương thức getter() and setter() và toString() (phương thưc toString trả về một chuỗi mô tả của đối tượng) . Lớp hình tròn và hình chữ nhật có thể được định nghĩa là các lớp con của lớp cha GeometricObject.
Hình 1.1 bên dưới mô tả mối quan hệ giữa chúng.

Trong thuật ngữ của Java,lớp C1 kế thừa từ một lớp C2 được gọi là SubClass và C2 được gọi là SuperClass. Một superclass cũng có thể được đề cập đến như là một lớp cha hoặc lớp cơ sở (base class) và subclass được coi là một lớp con, một lớp được kế thừa. một Subclass kế thừa việc truy cập vào các trường dữ liệu và phương thức của superclass và cũng có thể thêm vào một vài thuộc tính và phương thức mới Class Circle kế thừa lớp GeometricObject
Class Rectangle kế thừa lớp GeomatricObject

Super Keyword

Từ khóa super đề cập đến superclass và có thể được sử dụng để gọi phương thức của lớp cha và constructors
Trong java, từ khóa super có 3 cách sử dụng như sau:
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. ( Tìm hiểu thêm Instance là gì? tại đây )  

Ví dụ :

Output : 50

super() được sử dụng để gọi trực tiếp Constructor của lớp cha. 
kết quả

1234 Vehicle is created  Bike is created 

Từ khóa super được sử dụng để gọi trực tiếp phương thức của lớp cha.

Kết quả

1234 welcome to javawelcome 

Các kiểu kế thừa

Tính đa hình

Khái niệm

Một hành động có thể được thực hiện bằng nhiều cách khác nhau được gọi là đa hình.

Đa hình lúc runtime

Đa hình lúc runtime là quá trình gọi phương thức đã được ghi đè trong thời gian thực thi chương trình. Trong quá trình này, một phương thức được ghi đè được gọi thông qua biến tham chiếu của một lớp cha. Trước khi tìm hiểu về đa hình tại runtime, bạn có thể tìm hiểu về Upcasting. Khi biến tham chiếu của lớp cha tham chiếu tới đối tượng của lớp con, thì đó là Upcasting. Ví dụ:

( Tìm hiểu thêm Runtime là gì? tại đây )

12345 class A{}  class B extends A{}  A a=new B();//upcasting 

ví dụ về đa hình lúc runtime

Kết quả

123 running safely with 60km 

Overloading method

Nếu một lớp có nhiều phương thức cùng tên nhưng có tham số khác nhau thì đó là nạp chồng phương thức. Nếu bạn phải thực hiện chỉ một hoạt động có cùng tên phương thức thì kĩ thuật này làm tăng tính dễ đọc của chương trình.

Có hai cách để nạp chồng phương thức trong java:

  • Bằng việc thay đổi tham số
  • Bằng việc thay đổi kiểu dữ liệu của các tham số

Trong java nạp chồng phương thức không thể xảy ra bẳng việc thay đổi kiểu trả về của phương thức

Ví dụ về nạp chồng phương thức bằng cách thay đổi tham số

Output

1234 3040 

Overriding method

Nếu lớp con có cùng phương thức như đã được khai báo trong lớp cha thì đó được gọi là ghi đè phương thức. Nói cách khác nếu lơp con cung cấp trình triển khai cụ thể của phương thức mà đã được cung cấp bởi một trong các lớp cha của nó thì đó là ghi đè phương thức
Sử dụng của ghi đè phương thức
Cung cấp trình triển khai cụ thể của một phương thức mà đã được cung cấp bởi lớp cha của nó
Ghi đè phương thức được sử dụng để thu được tính đa hình tại runtime. Quy tắc cho ghi đè phương thức : phương thức phải có tên giống lớp cha, có tham số truyền vào, kiểu dữ liệu trả về giống lớp cha, và có quan hệ kế thừa với lớp cha

Ví dụ về ghi đè :

V. Tài liệu tham khảo

Introduction to java https://drive.google.com/file/d/0Bw5H_3WbSL-HSHZaRVlIcjhDWk0/view?usp=sharing

Bình luận về bài viết này