Java Interfaces example


–    Đây là ví dụ về khai báo và thực thi giao diện ở ngôn ngữ lập trình hướng đối tượng (Java).

– Giao diện (interface) chỉ chứa các định nghĩa phương thức, thuộc tính.

– Các lớp khi thực thi giao diện (implements) bắt buộc phải thực thi đầy đủ các phương thức, thuộc tính của lớp giao diện đó(interface).

interface Fruit {
public boolean hasAPeel();
}

interface Vegetable {
public boolean isARoot();
}

class FandVUtility {
static String doesThisHaveAPeel(Fruit fruitIn)
{
if (fruitIn.hasAPeel())
return “This has a peel”;
else
return “This does not have a peel”;
}
static String isThisARoot(Vegetable vegetableIn)
{
if (vegetableIn.isARoot())
return “This is a root”;
else
return “This is not a root”;
}
static String doesThisHaveAPeelOrIsThisRoot(
Tomato tomatoIn)
{
if (tomatoIn.hasAPeel() && tomatoIn.isARoot())
return “This both has a peel and is a root”;
else if (tomatoIn.hasAPeel() || tomatoIn.isARoot())
return “This either has a peel or is a root”;
else
return “This neither has a peel or is a root”;
}
}

class Tomato implements Fruit, Vegetable {

boolean peel = false;
boolean root = false;

public Tomato() {}

public boolean hasAPeel()
{
return peel;
}
public boolean isARoot()
{
return root;
}

public static void main(String[] args) {

//Tạo 1 đối tượng
Tomato tomato = new Tomato();

System.out.println(FandVUtility.isThisARoot(tomato));
//output is: This is not a root
System.out.println(
FandVUtility.doesThisHaveAPeel(tomato));
//output is: This does not have a peel
System.out.println
(FandVUtility.doesThisHaveAPeelOrIsThisRoot
(tomato));

//Tạo 1 đối tượng Fruit
//Fruit  = new Fruit();
//Lỗi: không thể tạo instantiate từ interface, bởi vì nó không phải là 1 class
//Muốn tạo 1 instantiate từ interface đó bạn có thể làm như sau:
Fruit tomatoFruit = new Tomato();

//System.out.println(
//  FandVUtility.isThisARoot(tomatoFruit));
//can not treat tomatoFruit as a Vegetable
//  without casting it to a Vegetable or Tomato
System.out.println(
FandVUtility.doesThisHaveAPeel(tomatoFruit));
//output is: This does not have a peel
//System.out.println
//  (FandVUtility.doesThisHaveAPeelOrIsThisRoot
//  (tomatoFruit));
//can not treat tomatoFruit as a Vegetable
//  without casting it to a Vegetable or Tomato
}
}

Gửi phản hồi

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s