1. Khai báo và khởi tạo đối tượng trong Java
Một đối tượng (object) trong Java là một thực thể của lớp. Để khai báo một đối tượng thuộc lớp, ta sử dụng cú pháp:
<TênLớp> tên đối tượng;
Ví dụ:
Bicycle sportsBicycle;
BankAccount acc;
Chúng ta sử dụng toán tử new và gọi đến hàm khởi tạo (constructor) của lớp để khởi tạo đối tượng. Hàm constructor có tên trùng với tên của lớp.
sportsBicycle = new Bicycle();
acc = new BankAccount();
Khi khởi tạo, đối tượng được cấp phát một vùng nhớ riêng để lưu trữ các dữ liệu của đối tượng đó. Vùng nhớ lưu trữ các đối tượng là vùng nhớ heap.
Lưu ý:
Nếu không được khởi tạo thì đối tượng mang giá trị null.
Khi đối tượng được khởi tạo, các thành phần dữ liệu (thuộc tính) của đối tượng được khởi tạo với giá trị mặc định của kiểu dữ liệu tương ứng.
– Kiểu số (number data type) là 0.
– Kiểu tham chiếu (reference type) là null.
– Kiểu luận lý boolean là false.
Chúng ta thường kết hợp khai báo và khởi tạo đối tượng trong 1 câu lệnh.
Bicycle sportsBicycle = new Bicycle();
BankAccount acc = new BankAccount();
2. Truy cập đến thuộc tính và phương thức của đối tượng
Sử dụng toán tử chấm “.” để truy cập đến thuộc tính và phương thức của đối tượng. Nếu truy cập từ trong cùng một lớp thì có thể không cần dùng toán tử chấm “.”.
Bên dưới là khai báo, định nghĩa lớp Lamp. Sau đó, khai báo và khởi tạo các đối tượng của lớp để sử dụng.
class Lamp {
boolean isOn;
// method to turn on the light
void turnOn() {
isOn = true;
System.out.println("Light on? " + isOn);
}
// method to turnoff the light
void turnOff() {
isOn = false;
System.out.println("Light on? " + isOn);
}
}
class Main {
public static void main(String[] args) {
//tạo các đối tượng led và halogen
Lamp led = new Lamp();
Lamp halogen = new Lamp();
led.turnOn();
halogen.turnOff();
}
}
Kết quả
Light on? true
Light on? false
Ở ví dụ trên, lớp Lamp được khai báo, định nghĩa. Sau đó, bên trong lớp Main, tạo các đối tượng led và halogen của lớp Lamp để sử dụng.
3. Đối tượng tự tham chiếu với từ khóa this
Hãy xem ví dụ bên dưới:
public class Account {
String owner;
long balance;
void setAccountInfo(String owner, long balance) {
this.owner = owner;
this.balance = balance;
}
}
Trong lớp Account, sử dụng tử khóa this để chỉ rõ các thuộc tính của lớp và gán giá trị cho chúng. Đó là tự tham chiếu với từ khóa this.
Với từ khóa this, cho phép truy cập vào đối tượng hiện tại của lớp, nhằm xóa đi sự nhập nhằng giữa biến cục bộ, tham số với thành phần dữ liệu lớp. Đặc biệt, trong trường hợp chúng cùng tên với nhau.
Không dùng từ khóa this bên trong các khối lệnh static.
4. Tạo đối tượng của một lớp bên trong lớp đó
Chúng ta có thể tạo những đối tượng của một lớp bên trong chính lớp đó. Ví dụ:
class Lamp {
boolean isOn;
void turnOn() {
isOn = true;
System.out.println("Light on? " + isOn);
}
public static void main(String[] args) {
Lamp led = new Lamp();
led.turnOn();
}
}
Đối tượng led thuộc lớp Lamp được tạo bên trong hàm main()
của lớp Lamp.