-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathInterfaceVariables.java
65 lines (56 loc) · 2.3 KB
/
InterfaceVariables.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Một interface có thể chứa các biến, nhưng các biến này mặc định là public, static và final;
/*
* - Các biến này có thể được tham chiếu trực tiếp thông qua tên của interface.
* - Các biến này xuất hiện trong tất cả các class implement interface đó.
*/
// Ví dụ:
interface Scaleable {
static final int BIG = 0, MEDIUM = 1, SMALL = 2;
void setScale(int size);
}
class Box implements Scaleable {
private int size;
@Override
public void setScale(int size) {
switch (size) {
case BIG:
this.size = 100;
break;
case MEDIUM:
this.size = 50;
break;
case SMALL:
this.size = 25;
break;
default:
System.out.println("Invalid size");
}
}
public void printSize() {
System.out.println("Size: " + size);
}
}
public class InterfaceVariables {
public static void main(String[] args) {
Box box = new Box();
box.setScale(Scaleable.BIG);
box.printSize(); // Size: 100
}
}
// Interfaces trong lập trình hướng đối tượng nên chỉ được sử dụng để định nghĩa
// hành vi, không phải để lưu trữ trạng thái hay dữ liệu cụ thể. Việc sử dụng
// interfaces để chứa biến (các hằng số) làm mờ đi mục đích chính của chúng và
// có thể dẫn đến một thiết kế không sạch sẽ, khiến cho các hằng số và hành vi
// được gói gọn cùng nhau một cách không cần thiết.
/*
* - Tất cả biến trong interface đều là public static final. Điều này có nghĩa
* là
* chúng luôn luôn công khai và có sẵn cho bất kỳ ai sử dụng interface. Điều này
* cản trở khả năng đóng gói, khiến cho việc quản lý trạng thái của chương trình
* trở nên khó khăn hơn.
* - Việc mỗi lớp thực thi một interface kế thừa toàn bộ các hằng số có thể gây
* rối loạn API của lớp đó, khiến cho API bao gồm nhiều thành phần không cần
* thiết
*/
// -> Tóm lại, không nên sử dụng interface để chứa biến, hãy sử dụng class hoặc
// enum thay thế.