Phương thức tạo dựng (constructor) 1. Công dụng

Một phần của tài liệu Giáo trình Java (Trang 67 - 71)

BÀI 2 KHỞI ĐẦU VÀ DỌN DẸP

I. Phương thức tạo dựng (constructor) 1. Công dụng

Phương thức tạo dựng là một phương thức của lớp ( nhưng khá đặc biệt ) thường dùng để khởi tạo một đối tượng mới. Thông thường người ta thường sử dụng hàm tạo để khởi gán giá trị cho các thuộc tính của đối tượng và có thể thực hiện một số công việc cần thiết khác nhằm chuẩn bị cho đối tượng mới.

2. cách viết hàm tạo

a) đặc điểm của phương thức tạo dựng

• hàm tạo có tên trùng với tên của lớp

• hàm tạo không bao giờ trả về kết quả

• nó được java gọi tự động khi một đối tượng của lớp được tạo ra

• hàm tạo có thể có đối số như các phương thức thông thường khác

• trong một lớp có thể có nhiều hàm tạo

b) ví d

ví dụ 1: sử dụng hàm tạo để in ra màn hình xâu “Creating Rock”

class Rock {

Rock() {// This is the constructor System.out.println("Creating Rock");

} }

public class SimpleConstructor { public static void main(String[] args) { for(int i = 0; i < 10; i++)

new Rock();// call constructor }

}

ví dụ 2: sử dụng hàm tạo có đối

class Rock2 { Rock2(int i) { System.out.println(

"Creating Rock number " + i);

} }

public class SimpleConstructor2 { public static void main(String[] args) { for(int i = 0; i < 10; i++)

new Rock2(i);// gọi hàm tạo có đối }

}// /:~

3. Hàm tạo mặc định

Khi xây dựng một lớp mà không xây dựng hàm tạo thế thì java sẽ cung cấp cho ta một hàm tạo không đối mặc định, hàm tạo này thực chất không làm gì cả, nếu trong lớp đã có ít nhất một hàm tạo thì hàm tạo mặc định sẽ không được tạo ra, khi ta tạo ra một đối tượng thì sẽ có một hàm tạo nào đó được gọi, nếu trình biên dịch không tìm thấy hàm tạo tương ứng nó sẽ thông báo lỗi, điều này thường xẩy ra khi chúng ta không xây dựng hàm tạo không đối nhưng khi tạo dựng đối tượng ta lại không truyền vào tham số, như được chỉ ra trong ví dụ sau:

public class TestPassByValue { public TestPassByValue(String s) {

System.out.println(s);

}

public static void main(String[] args) {

TestPassByValue thu = new TestPassByValue();

// lỗi vì lớp này không có hàm tạo không đối

TestPassByValue thu1 = new TestPassByValue("Hello World");

// không vấn đề gì }

}

4. Gọi hàm tạo từ hàm tạo

Khi bạn viết nhiều hàm tạo cho lớp, có đôi lúc bạn muốn gọi một hàm tạo này từ bên trong một hàm tạo khác để tránh phải viết lặp mã. Để có thể gọi đến hàm tạo ta sử dụng từ khoá this.

Cú pháp this(danh sách đối số);

Ví dụ:

public class Test { public Test () {

System.out.println("hàm tạo không đối");

}

public Test ( int i) {

this();// gọi đến hàm tạo không đối của chính lớp này }

public static void main(String[] args) {

TestPassByValue thu=new TestPassByValue(10);

}

}

Chú ý:

1) bên trong cấu tử ta chỉ có thể gọi được tối đa một cấu tử, điều này có nghĩa là ta không thể gọi được từ 2 cấu tử trở lên bên trong một cấu tử khác như được chỉ ra trong ví dụ sau:

public class TestPassByValue { public TestPassByValue() {

System.out.println("Day la ham tao khong doi");

}

public TestPassByValue(int i) {

System.out.println("Day la ham tao doi so nguyen");

}

public TestPassByValue(String s) {

this();// không thể gọi hai hàm tạo trở lên bên trong một hàm tạo this(10);

System.out.println("Day la ham tao doi so xau");

}

public static void main(String[] args) {

TestPassByValue thu = new TestPassByValue();//

TestPassByValue thu1 = new TestPassByValue("Hello World");//

}

}

2) khi gọi một hàm tạo bên trong một hàm tạo khác thì lời gọi hàm tạo phải là lệnh đầu tiên trong thân phương thức, nên ví dụ sau sẽ bị báo lỗi

public class Test{

public Test () {

System.out.println("Day la ham tao khong doi");

}

public Test (String s) {

System.out.println("Day la ham tao doi so xau");

this();// gọi đến cấu tử phải là lệnh đầu tiên }

public static void main(String[] args) { Test thu = new Test (“Hello World”);

}

}

nếu cho dịch ví dụ trên trình biên dịch sẽ phàn nàn

"Test.java": call to this must be first statement in constructor at line 7, column 9

II. Khối khởi đầu vô danh và khối khởi đầu tĩnh

Một phần của tài liệu Giáo trình Java (Trang 67 - 71)

Tải bản đầy đủ (PDF)

(193 trang)