Download miễn phí Đề cương bài giảng Java cơ sở





cách trừu tượng
Một lớp trừu tượng có thểchứa một vài cách trừu tượng, do lớp trừu
tượng chỉlàm lớp cơsởcho các lớp khác, do vậy các cách trừu tượng
cũng không được cài đặt cụthể, chúng chỉgồm có khai báo, việc cài đặt cụthểsẽ
dành cho lớp con
1. Chú ý:
1) nếu trong lớp có cách trừu tượng thì lớp đó phải được khai báo là trừu
tượng
2) nếu một lớp kếthừa từlớp trừu tượng thì: hay chúng phải ghi đè tất cảcác
cách ảo của lớp cha, hay lớp đó phải là lớp trừu tượng
3) không thểtạo ra đối tượng của lớp trừu tượng



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

nhưng không có cài
đặt). Giống như một lớp ta cũng có thể thêm bổ từ public vào trước định nghĩa của
interface. Sau đây là hình ảnh của một interface.
Nhưng do java tự động làm các trường thành final nên ta không cần thêm bổ từ
này, do vậy ta có thể định nghĩa lại giao diện như sau:
Nhưng do java tự động làm các trường thành final nên ta không cần thêm bổ từ
này
public interface StockWatcher
{
final String
sunTicker = "SUNW";
final String oracleTicker = "ORCL";
final String ciscoTicker = "CSCO";
void valueChanged(String tickerSymbol, double newValue);
}
1. Phần khai báo của giao diện
Tổng quát phần khai báo của một giao diện có cấu trúc tổng quát như sau:
Public //giao diện này là công cộng
interface InterfaceName //tên của giao diện
Extends SuperInterface //giao diện này là mở rộng của 1 giao diện
khác
{
InterfaceBody
}
//thân của giao diện
Trong cấu trúc trên có 2 phần bắt buộc phải có đó là phần interface và
InterfaceName, các phần khác là tuỳ chọn.
2. Phần thân
Phần thân khai báo các các hằng, các cách rỗng ( không có cài đặt ), các
cách này phải kết thúc với dấu chấm phẩy ‘;’, bởi vì chúng không có phần
cài đặt
Chú ý:
1) Tất cả các thành phần của một giao diện tự động là public do vậy ta không cần
phải cho bổ từ này vào.
2) Java yêu cầu tất cả các thành phần của giao diện phải là public, nếu ta thêm các
bổ từ khác như private, protected trước các khai báo thì ta sẽ nhận được một lỗi
lúc dịch
3) Tất cả các trường tự động là final và static, nên ta không cần cho bổ từ
này vào.
3. Triển khai giao diện
Bởi một giao diện chỉ gồm các mô tả chúng không có phần cài đặt, các giao diện
được định nghĩa để cho các lớp dẫn xuất triển khai, do vậy các lớp dẫn xuất từ lớp
này phải triển khai đầy đủ tất cả các khai báo bên trong giao diện, để triển khai
một giao diện bạn bao gồm từ khoá implements vào phần khai báo lớp, lớp của
bạn có thể triển khai một hay nhiều giao diện ( hình thức này tương tự như kế
thừa bội của C++)
Ví dụ
public class StockApplet extends Applet implements StockWatcher {
.. .
public void valueChanged(String tickerSymbol, double newValue) {
if (tickerSymbol.equals(sunTicker)) {
.. .
} else if (tickerSymbol.equals(oracleTicker)) {
.. .
} else if (tickerSymbol.equals(ciscoTicker)) {
.. .
}
}
}
Chú ý:
1) Nếu một lớp triển khai nhiều giao diện thì các giao diện này được liệt kê cách
nhau bởi dấu phẩy ‘,’
2) Lớp triển khai giao diện phải thực thi tất cả các cách được khai báo
trong giao diện, nếu như lớp đó không triển khai, hay triển khai không hết thì
nó phải được khai báo là abstract
3) Do giao diện cũng là một lớp trừu tượng do vậy ta không thể tạo thể hiện của
giao diện
4) Một lớp có thể triển khai nhiều giao diện, do vậy ta có lợi dụng điều này để
thực hiện hành vi kế thừa bội, vốn không được java hỗ trợ
5) Một giao diện có thể mở rộng một giao diện khác, bằng hình thức kế thừa
II. Lớp trong
Có thể đặt một định nghĩa lớp này vào bên trong một lớp khác. điều này
được gọi là lớp trong. Lớp trong là một chức năng có giá trị vì nó cho phép bạn gộp
nhóm các lớp về mặt logic thuộc về nhau và để kiểm soát tính thấy được của các
lớp này bên trong lớp khác. Tuy nhiên bạn phải hiểu rằng lớp trong không phải là
là hợp thành
Ví dụ:
public class Stack {
private Vector items;
.. .//code for Stack's methods and constructors not shown...
public Enumeration enumerator() {
return new StackEnum();
}
class StackEnum implements Enumeration {
int currentItem = items.size() - 1;
public boolean hasMoreElements() {
return (currentItem >= 0);
}
public Object nextElement() {
if (!hasMoreElements())
throw new NoSuchElementException();
else
return items.elementAt(currentItem--);
}
}
}
Lớp trong rất hữu hiệu khi bạn bạn muốn tạo ra các lớp điều hợp ( được bàn kỹ khi
nói về thiết kế giao diện người dùng )
Bài 9 MẢNG, XÂU KÝ TỰ, TẬP HỢP
I. Mảng
1. Mảng 1 chiều
a) Khai báo
Cú pháp khai báo:
- KDL tên_mảng[];//Khai báo một con trỏ mảng
- KDL []tên_mảng;//như trên
- KDL tên_mảng[] = new KDL[spt];//Tạo ra một mảng có spt phần tử
Trong cú pháp trên thì:
• KDL là một kiểu dữ liệu bất kỳ như: kiểu nguyên thủy, kiểu đối tượng… nó
xác định kiểu dữ liệu của từng phần tử của mảng.
• Spt là số phần tử của mảng.
Chú ý:
• Mảng trong Java là một đối tượng
• Cũng như các đối tượng khác, mảng phải được tạo ra bằng toán tử new như
sau:
Tên_mảng=new KDL[spt];
• Khi mảng được tạo ra thì mỗi phần tử của mảng sẽ nhận một giá trị mặc định,
quy tắc khởi tạo giá trị cho các phần tử của mảng cũng chính là quy tắc khởi
đầu giá trị cho các thuộc tính của đối tượng, tức là mỗi phần tử của mảng sẽ
nhận giá trị:
+ 0 nếu KDL là kiểu số
+ ‘\0’ nếu KDL là kí tự
+ false nếu KDL là boolean
+ null nếu KDL là một lớp nào đó.
Ví dụ 1. Khai báo một mảng số nguyên gồm 100 phần tử
Cách 1:
int mangInt[];//Khai báo một con trỏ đến mảng các số nguyên
mangInt=new int[100];//Tạo ra mảng
Cách 2:
int mangInt[]=new int[100];
Ví dụ 2: Giả sử ta có lớp SinhVien đã đươc định nghĩa, hãy khai báo một mảng
gồm 100 đối tượng của lớp SinhVien
SinhVien arraySinhVien[]=new SinhVien[100];
Chú ý: Lúc này mỗi phần tử của mảng arraySinhVien là một con trỏ của lớp
SinhVien và hiện giờ mỗi phần tử của mảng đang trỏ đến giá trị null. Để khởi tạo
từng phần tử của mảng ta phải làm như sau:
arraySinhVien[0]=new SinhVien(“sv01”, “Nguyễn Văn An”, “Hưng Yên”);
arraySinhVien[1]=new SinhVien(“sv02”, “Nguyễn Thị Bình”, “Bắc Giang”);
….
arraySinhVien[99]=new SinhVien(“sv100”, “Đào Thị Mến”, “Hà Nam”);
Ngoài cách khai báo trên Java còn cho phép ta kết hợp cả khai báo và khởi gán các
phần tử của mảng theo cách sau:
int[] mangInt = {1, 3, 5, 7, 9};
Tạo ra một mảng gồm 5 phần tử, các phần tử của mảng lần lượt được gán các giá
trị là: 1, 3, 5, 7, 9
SinhVien[] mangSinhVien = {
new SinhVien(“sv01”, “Nguyễn Văn A”,
“HY”),
new SinhVien(“sv02”, “Nguyễn Thị B”, “HN”),
new SinhVien(“sv03”, “Đỗ Thị Q”, “BG”),
null
};
Khai báo một mảng gồm 4 phần tử, giá trị của các phần tử lần lượt được khởi gán
như sau:
mangSinhVien [0]=new SinhVien(“sv01”, “Nguyễn Văn A”, “HY”)
mangSinhVien [1]=new SinhVien(“sv02”, “Nguyễn Thị B”, “HN”)
mangSinhVien [2]=new SinhVien(“sv03”, “Đỗ Thị Q”, “BG”)
mangSinhVien [3]=null
b) Truy xất đến các phần tử của mảng một chiều
Để truy xuất đến phần tử thứ ind của mảng ta sử dụng cú pháp như sau:
Tên_mảng[ind-1]
Chú ý: Phần tử đầu tiên của mảng có chỉ số là 0.
Ví dụ:
int a[]=new int [3];//Khai báo và tạo ra mảng gồm 3 phần tử
Lúc này các phần tử của mảng lần lượt được truy xuất như sau:
- Phần tử đầu tiên của mảng là a[0]
- Phần tử thứ 2 của mảng là a[1]
- Phần tử thứ 3 đồng thời là phần tử cuối cùng của mảng là a[2]
c) Lấy về số phần tử hiện tại của mảng
Mảng trong Java là một đối tượng, do vậy nó cũng có các thuộc tính và các
cách như các đối tượng khác. Để lấy về số phần tử của mảng ta sử dụng
thuộc tính length nh
 

Các chủ đề có liên quan khác

Top