Class in Java - basic

rcp

Administrator
Tạo ra các lớp
Bây giờ chúng ta sẽ học cách làm thế nào để tạo ra và sử dụng các đối tượng, và các đối tượng được dọn dẹp như thế nào. Cũng là lúc để chỉ cho bạn làm thế nào để viết ra các lớp từ những đối tượng được tạo ra.

Bài học này chỉ cho bạn các thành phần chính của một lớp thông qua một ví dụ nhỏ cài đặt một ngăn xếp LIFO( Last-In-First-Out: vào sau ra trước).

Sơ đồ sau đây liệt kê nội dung lớp đó và cấu trúc của mã chương trình:

1.jpg


1. Khai báo class
Cài đặt một class gồm hai phần chính: khai báo class và thân class.

Phần khai báo class khai báo tên của class cùng với các thuộc tính khác. Phần khai báo của class Stack khá đơn giản và cho biết lớp đó là công khai (public) và tên của class là Stack.

Thông thường thì bạn chỉ cần khai báo dưới dạng tối thiểu như trên.

Tuy nhiên, việc khai báo lớp có thể cho biết nhiều hơn về lớp đó, ví dụ như tên của siêu lớp (superclass) và nếu có thể là một lớp con (subclass)


  • Phía trái của sơ đồ dưới đây biểu diễn các phần có thể có khi khai báo một class (theo đúng thứ tự trong sơ đồ).
  • Phần bên phải là mô tả mục đích của việc khai báo các phần đó.
  • Phần cần được khai báo là từ khóa class và tên của lớp như phần in đậm.
  • Tất cả các phần khác có thể thêm vào và mỗi phần chỉ được viết trên một dòng( do “extends Super” là một phần riêng rẽ”) .
  • Các phần in nghiêng biểu thị một định danh(identifier) nào đó, như tên của lớp hay giao diện (interface).
  • Nếu bạn không khai báo rõ ràng các mục thêm vào, bộ dịch của Java sẽ hiểu ngầm định lớp của bạn là một lớp con của lớp Object có tính chất : không công khai (nonpublic), không trừu tượng (nonabstract), không phải là lớp cuối (nonfinal), không triển khai một giao diện nào cả.

Danh sách dưới đây cung cấp cho bạn một số chi tiết về các thành phần trong khai báo class. Đồng thời, nó cũng liên kết đến một số chương khác (có nói tới ý nghĩa của các phần này, ảnh hưởng của chúng tới các class và các chương trình Java của bạn ) trong giáo trình này.

public
Theo ngầm định, một class chỉ có thể được sử dụng bởi các class khác trong cùng một gói (package). Bổ từ public cho biết rằng lớp đó có thể đựơc sử dụng bởi bất cứ class nào không quan tâm tới package của nó.

abstract
Bổ từ này chỉ ra rằng class không cho phép thể hiện (instantiate).

final
Bổ từ này cho biết class không thể là class con của bất cứ lớp nào khác.

class NameOfClass
Từ khóa class chỉ cho bộ dịch của Java biết rằng đây là khai báo lớp, tên-của-lớp là NameOfClass.

extends Super
Mệnh đề extends cho biết Super như là một siêu lớp (superclass) của lớp đó,liên quan tới việc thêm vào lớp đó sự phân cấp lớp(class hierarchy).

implements Interfaces
Để khai báo rằng lớp của bạn triển khai một hoặc nhiều giao diện nào đó, bạn có thể dùng từ khóa implements kèm theo dấu phẩy để liêt kê tên của các giao diện được cài đặt trong lớp đó.

2. Thân lớp
Phần thân lớp tiếp theo phần khai báo lớp và được bao bởi hai ngoặc nhọn { }. Phần thân lớp chứa phần khai báo cho tất cả các biến chương trình (instance variable) và các biến lớp -class variable-(gọi chung là các biến bộ phận-member variable) của lớp đó. Thêm vào đó, thân lớp còn gồm các khai báo và cài đặt cho tất cả các phương thức(instance method) và phương thức-lớp(class method) – được gọi chung là các phương thức- của lớp đó.

Thân lớp chứa toàn bộ mã chương trình cung cấp cho vòng đời của đối tượng được tạo ra bởi lớp đó: constructor cho việc khởi tạo một đối tượng mới, khai báo cho các biến cung cấp trạng thái của lớp và các đối tượng của nó, các phương thức để triển khai hành động của lớp và các đối tượng của nó, và hãn hữu lắm, một phương thức cuối hóa (finalize method) để cung cấp các thao tác dọn dẹp một đối tượng sau khi nó đã xong việc.

Các biến và các phương thức được gọi chung là các bộ phận.
Chú ý
:

  • Các Constructors (tạm dịch là hàm dựng) không phải là phương thức cũng chẳng phải là bộ phận.
  • class Stack định nghĩa một biến bộ phận trong phần thân của nó để chứa các phần tử của nó – vector items. Nó cũng định nghĩa một hàm dựng -- một hàm dựng không có đối số-- và ba phương thức: push, pop, và isEmpty.

3. Cung cấp các Constructors cho lớp của bạn
Một class có thể chứa một hoặc nhiều constructor cung cấp các thao tác khởi tạo một đối tượng được tạo ra từ lớp đó. Mục này chỉ cho bạn cách viết một hàm dựng.

Cung cấp các constructor cho lớp của bạn

  • Tất cả các class trong Java đều có những constructor (tạm dich là hàm dựng) có vai trò khởi tạo một đối tượng mới của class đó.
  • constructor có cùng tên với class.
Ví dụ, tên của constructor của class Stack là Stack (), tên constructor của lớp Rectangle là Rectangle(), và tên constructor của lớp Thread là Thread(). Class Stack của chúng ta chi định nghĩa một constructor đơn giản:

Code:
public Stack() {
items = new Vector(10);
}

Java cung cấp tên đè lên nhau cho các constructor , vì thế một class có thể có nhiều constructor, tất cả chúng đều cùng tên.

Dưới đây là một constructor khác có thể được định nghĩa bởi class Stack. Constructor đặc biệt này đặt cỡ khởi tạo cho ngăn xếp theo tham số của nó:

Code:
public Stack(int initialSize) {
items = new Vector(initialSize);
}

Cả hai constructor đều chia sẻ chung một tên, Stack, nhưng chúng có danh sách tham số khác nhau. Bộ dịch phân biệt các constructor này dựa trên số các tham số có trong danh sách và kiểu của chúng.

Thông thường, một constructor dùng các tham số của nó để khởi tạo một trạng thái của đối tượng mới. Khi tạo ra một đối tượng, chúng ta chọn constructor nào mà có tham số phù hợp nhất với những gì ta muốn khởi tạo cho đối tượng mới.

Dựa trên số lượng và kiểu của các tham số mà bạn đưa (pass) vào constructor, bô dịch có thể xác định constructor nào cần được sử dụng.

Bộ dịch biết rằng khi bạn viết những dòng lệnh sau, nó nên dùng một constructor có-tham-số kiểu số nguyên:
new Stack(10);

Tương tự, khi bạn viết những dòng lệnh sau đây, bộ dich sẽ chọn một constructor không-có-tham-số (hay constructor ngầm-định):
new Stack();


Tham khảo và thêm ý
--- rcp ---


Java Basics
URL: http://leepoint.net/JavaBasics/index.html
Tác giả: Fred Swartz
Mô tả: Tập hợp các bài học cơ bản về Java, website này đang trong giai đoạn phát triển.

3. Java & Software Engineering
URL: http://www.saunalahti.fi/~jviinama/java.html
Mô tả: Một website cực kỳ hữu ích, nó sưu tầm rất nhiều links tới các websites, tools... chuyên về Java. Bạn sẽ phải ngạc nhiên khi ghé thăm nó.

4. OODesign.com
URL: http://www.oodesign.com/
Mô tả: Ai học lập trình hướng đối tượng sẽ ko thể bỏ qua website này. Nó bao gồm các bài viết về OOD principles, design patterns có cả ví dụ minh hoạ
 

Facebook Comment

Top