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

Một phần của tài liệu Đề cơng bài giảng Java cơ sở (Trang 67 - 71)

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ỡ

} } (adsbygoogle = window.adsbygoogle || []).push({});

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) { (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Đề cơng bài giảng Java cơ sở (Trang 67 - 71)