Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
GIAO DIỆN
(INTERFACE)
Giảng viên: Đỗ Ngọc Như Loan
INTERFACE
Giao diện là ràng buộc, giao ước đảm bảo cho các
lớp kế thừa nó phải tuân thủ và thực hiện.
Một giao diện giống như một lớp chỉ chứa các
phương thức trừu tượng.
Khi một lớp thực thi một giao diện, lớp này phải thực
thi tất cả các phương thức của giao diện.
Ví dụ: Interface: IBay, IChay=> MayBay, Chim sẽ có cùng interface là IBay. Rõ
ràng mặc dù MayBay, Chim có cùng cách thức hoạt
động là bay nhưng chúng khác nhau về bản chất.
=> MayBay cũng có interface là IChay
[thuộc tính truy xuất] interface
{
// các thuộc tính
// các phương thức không có phần thựcthi
}
KHAI BÁO GIAO DIỆN
THỰC THI GIAO DIỆN
[thuộc tính truy xuất] class implements , , …
{
// thực thi tất cả các phương thức trong giaodiện
// chứa các thuộc tính và phương thức riêng
}
//khai bao interface Bay
public interface IBay {
void Bay();
}
//Lớp Chim thừa kế interface IBaypublic class Chim implements IBay {
public void Bay() {
System.out.println("Chim: Bay");
}
}
//Lớp MayBay thừa kế interface IBaypublic class MayBay implements IBay {
public void Bay() {
System.out.println("May Bay: Bay");
}
}
public static void main(String[] args) {
Chim chim = new Chim();
chim.Bay();
MayBay maybay = new MayBay();
maybay.Bay();
}
GHI CHÚ
Thông thường tên của giao diện được bắt đầu với chữ I hoa
(không bắt buộc nhưng việc đặt tên như vậy rõ ràng và dễ
hiểu, tránh nhầm lẫn với các thành phần khác).
Giao diện không chứa biến, không có constructors
Mặc định thì các thuộc tính bên trong giao diện sẽ
là public, static và final
Không thể tạo thể hiện (instance) của giao diện.
Mặc định các thành viên của giao diện là public.
GHI CHÚ
Dù không khai báo từ khoá abstract, nhưng mọi hàm
trong 1 interface đều được coi là abstract (trừu tượng)
Ngôn ngữ Java không cho phép 1 lớp kế thừa nhiều lớp
nhưng có thể thực thi nhiều hơn một giao diện.
Nếu 1 lớp vừa kế thừa 1 lớp khác vừa thực thi giao diện
thì từ khóa extends sẽ đứng trước implements.
public interface IBay {
void Bay();
}
public interface IChay {
void Chay();
}
public class Chim implements IBay {
public void Bay() {
System.out.println("Chim: Bay");
}
}
public class MayBay implements IBay,IChay {
public void Bay() {
System.out.println("May Bay: Bay");
}
public void Chay() {
System.out.println("May Bay: Chay");
}
}
public static void main(String[] args) {
Chim chim = new Chim();
chim.Bay();
MayBay maybay = new MayBay();
maybay.Bay();
maybay.Chay();
IBay isBay = (IBay)maybay;
isBay.Bay();
IChay isChay = (IChay)maybay;
isChay.Chay();
}
MỞ RỘNG GIAO DIỆN
Chúng ta có thể mở rộng (thừa kế) một giao diện
đã tồn tại bằng cách thêm vào đó những phương
thức hoặc thành viên mới.
VÍ DỤ
//mở rộng interface IBay
public interface IBayCao extends IBay {
void docao(); // cho biết độ cao của đối tượng bay
}
KẾT HỢP GIAO DIỆN
Có thể tạo giao diện mới bằng cách kết hợp các giao
diện cũ và ta có thể thêm các phương thức hay các
thuộc tính cho giao diện mới.
VÍ DỤ
public interface IBay {
void Bay();
}
public interface IChay {
void Chay();
}
//kết hợp interface IBay và IChay
public interface IHoatDong extends IBay,IChay {
void vantoc(); // cho biết vận tốc
}
public class MayBay implements IHoatDong {
int vantoc;
public MayBay(int v) { vantoc = v; }
@Override
public void Bay() {
System.out.println("May Bay: Bay"); }
@Override
public void Chay() {
System.out.println("May Bay: Chay"); }
@Override
public void vantoc() {
System.out.println(“Van toc: “+vantoc); }
}
public class Main {
public static void main(String[] args) {
MayBay m = new MayBay(1000);
m.Bay();
m.Chay();
m.vantoc();
}
}
Khi thực thi nhiều giao diện có cùng phương thức, phầnthực thi phương thức sẽ sử dụng chung cho cả 2 giao diện.
Ví dụ:
public interface IBay {
void Bay(); void Stop();
}
public interface IChay {
void Chay(); void Stop();
}
public class MayBay implements IBay,IChay {
public void Bay() { System.out.println("May Bay: Bay"); }
public void Chay() { System.out.println("May Bay: Chay"); }
public void Stop() {
System.out.println(“Ngung");
}
}
LUYỆN TẬP
o Thiết kế interface IXuat có phương thức trừu tượngxuat() (dùng để xuất ra các thông tin của đối tượng).
o Thiết kế lớp TaiLieu thực thi interface IXuat, lớp nàycó thuộc tính tên; hàm thiết lập 1 tham số
o Thiết kế lớp Sach kế thừa lớp TaiLieu và có thêmthuộc tính tác giả, số trang, hàm thiết lập 3 tham số, override phương thức xuat()
o Thiết kế lớp Dia kế thừa lớp TaiLieu và có thêmthuộc tính dung lượng, hàm thiết lập 2 tham số, override phương thức xuat()
o Thiết kế lớp DSTaiLieu, có các phương thức thêm, sửa, xóa, tìm kiếm và xuất danh sách.
LUYỆN TẬPclass QuanLyTL {
DSTaiLieu dstl = new DSTaiLieu();
public void menu() {
/* hiện menu như sau và thực hiện chức năng tùy theo lựa chọncủa user (dùng switch case)
1. Thêm tài liệu
2. Sửa tài liệu
3. Xóa tài liệu
4. Tìm kiếm tài liệu
5. Xuất danh sách tài liệu
6. Thoát */
}
}
class DSTL_Test{
public static void main(String [] args)
QuanLyTL ql1=new QuanLyTL();
ql1.menu();
}
ĐỌC DỮ LIỆU TỪ FILE TEXTimport java.io.FileReader;
import java.io.BufferedReader;
public class ReadFile {
public static void main(String[] args) {
try {
BufferedReader input = new BufferedReader(new FileReader("data.txt"));
String line = input.readLine();
while (line != null) {
System.out.println(line);
line = input.readLine();
}
input.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
import java.io.FileReader;
import java.io.BufferedReader;
public class ReadFile {
public static void main(String[] args) {
try {
BufferedReader input = new BufferedReader(new FileReader("data.txt"));
String line = input.readLine();
while (line != null) {
// chia chuỗi thành các chuỗi con phân cách bởi dấu phẩy
String[] arr = line.split(",");
for (int i = 0; i
GHI DỮ LIỆU VÀO FILE TEXT
import java.io.FileWriter;
public class WriteFile {
public static void main(String args[]) {
try {
FileWriter fw = new FileWriter(“data.txt”);
fw.write("Welcome to java.");
fw.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
LUYỆN TẬPclass QuanLyTL {
DSTaiLieu dstl = new DSTaiLieu();
public void menu() {
/* hiện menu như sau và thực hiện chức năng tùy theo lựa chọn của user (dùngswitch case)
1. Thêm tài liệu
2. Sửa tài liệu
3. Xóa tài liệu
4. Tìm kiếm tài liệu
5. Xuất danh sách tài liệu
6. Tải danh sách tài liệu từ file // đọc file lưu vào ds tài liệu
7. Xuất danh sách tài liệu ra file // ghi ds tài liệu hiện tại ra file
8. Thoát */
}
}