-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCasting.java
54 lines (46 loc) · 2.09 KB
/
Casting.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
class Animal {
void eat() {
System.out.println("eating...");
}
}
// Lớp Dog kế thừa từ lớp Animal.
class Dog extends Animal {
void bark() {
System.out.println("barking...");
}
}
public class Casting {
// Ép kiểu (Casting) trong Java là quá trình chuyển đổi giữa các kiểu dữ liệu.
// Có hai loại ép kiểu: ép kiểu ngầm định (implicit casting) và ép kiểu tường
// minh (explicit casting).
/*
* - Ép kiểu ngầm định (implicit casting): Java tự động chuyển đổi giữa các kiểu
* dữ liệu.
* - Ép kiểu tường minh (explicit casting): Chuyển đổi giữa các kiểu dữ liệu một
* cách thủ công.
* Để thực hiện ép kiểu tường minh, bạn cần sử dụng cú pháp: (type) expression.
* Trong đó, type là kiểu dữ liệu mà bạn muốn chuyển đổi và expression là giá
* trị cần chuyển đổi.
*/
// Trong kế thừa đối tượng, một đối tượng của lớp con có thể được gán cho một
// đối tượng của lớp cha.
// Điều này được gọi là ép kiểu ngầm định.
// Tuy nhiên, một đối tượng của lớp cha không thể được gán cho một đối tượng của
// lớp con mà không có ép kiểu tường minh.
// Ví dụ:
public static void main(String[] args) {
Animal anAnimal = new Animal();
Dog aDog = new Dog();
anAnimal = aDog; // Ép kiểu ngầm định
// aDog = anAnimal;
// Lỗi: incompatible types: Animal cannot be converted to Dog
aDog = (Dog) anAnimal; // Ép kiểu tường minh
// lệnh instanceof kiểm tra xem một đối tượng có phải là một thể hiện của một
// lớp cụ thể hay không.
// Ví dụ:
if (anAnimal instanceof Dog) {
aDog = (Dog) anAnimal;
aDog.bark();
} // -> Nếu anAnimal là một thể hiện của lớp Dog, thì gọi phương thức bark()
}
}