Interface - template
Bây giờ ta có 1 khái niệm mới, là giao diện. Giao diện ra đời chính là để giải quyết đa kế thừa. Mỗi lớp trong Java chỉ có 1 lớp cha, nhưng có thể implements nhiều giao diện.
Giao diện được khai báo giống như 1 lớp, cũng có state và behavior. Nhưng state của giao diện là final còn behavior là abstract
Giả sử, ta sẽ khai báo một giao diện
12345678910public
interface
Product {
// hai state duoi day la final, tuc la lop implements khong duoc phep doi
// gia tri
static
string maker =
"My Corp"
;
static
string phone =
"555-7767"
;
// behavior duoi day la abstract, tuc la khong co noi dung
public
int
getPrice(
int
id);
}
Bây giờ, ta sẽ viết một class có cài đặt (implements) giao diện này:
1234567891011public
class
Shoe
implements
Product {
public
int
getPrince(
int
id)
{
return
(id= =
1
)?
5
:
10
;
}
public
String getMaker() {
return
maker;
}
}
Muốn implements nhiều giao diện, làm như sau, ví dụ class Toyota extends Car implements ActionCar, ActionMobilation
package-unit
Hãy tạo 1 thư mục có tên là Transport
Bên trong thư mục này hãy tạo 2 file là Car.java và Bicycle.java như sau
Car.java
1234567package
Transport;
public
class
Car {
public
String manufacturer;
public
int
year;
}
Bicycle.java
12345678910package
Transport;
public
class
Bicycle {
public
int
cost;
public
Bicycle(
int
cost) {
this
.cost = cost;
}
}
Như vậy là ta đã tạo ra 1 gói chứa 2 lớp là Car và Bicycle. Bây giờ ta có 1 chương trình muốn sử dụng gói này là TestProgram.java. Ta viết:
ViDuTransport.java
12345678910import
Transport.*;
class
TestProgram {
public
static
void
main(String args[]) {
Car myCar =
new
Car();
myCar.manufacturer =
"Toyota"
;
Bicycle myBicycle =
new
Bicycle(
1500
);
}
}
Lưu ý nếu trong file ViDuTransport bạn không khai báo import Transport.* thì bạn vẫn có thể khai báo tường minh như sau
Transport.Car myCar = new Transport.Car();
0 nhận xét:
Đăng nhận xét