01/10/2018, 17:31

Tạo hàm trong class chứa main ở Java

Em có 2 đoạn code như sau:
Đoạn 1:

public class BTChuong0_7 {

	public void xuatHelloWorld()
	{
		System.out.println("Hello World");
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		xuatHelloWorld();
	}

}

Đoạn 2:

public class BTChuong0_7 {

	public static void xuatHelloWorld()
	{
		System.out.println("Hello World");
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		xuatHelloWorld();
	}

}

Theo em học thì nếu dùng từ khóa public thì các phương thức và biến trong class có thể thấy nhau, nhưng đoạn 1 lại không chạy, còn đoạn 2 khi thêm static nữa thì mới chạy. Anh chị giải thích cho em cách hiểu của em như vậy đúng không? Nếu sai thì nên hiểu như thế nào cho hợp lý. Em cảm ơn

Nguyen Kien viết 19:40 ngày 01/10/2018

main method bản thân nó là một static method rồi nên các instance method không thể gọi trực tiếp trong main mà phải khởi tạo object vậy nên đoạn code thứ nhất bị lỗi vì lẽ đó

Lê Minh Cường viết 19:43 ngày 01/10/2018

Nếu như vậy thì các hàm static method không thể gọi được hàm instance method nếu chúng cùng 1 class à anh?

Nguyen Kien viết 19:48 ngày 01/10/2018

đúng rồi bạn. Các static method chỉ gọi đc các static method một cách trực tiếp thông qua tên class gián tiếp thông qua việc khởi tạo object

Trương Tấn Phát viết 19:33 ngày 01/10/2018

Cùng hay không cùng không quan trọng.
Quan trọng là:

  • Phương thức tĩnh (của lớp) thì gọi mà không cần khởi tạo đối tượng của lớp.
  • Phương thức thường (của đối tượng) gọi phải tạo đối tượng của lớp.
Lê Minh Cường viết 19:40 ngày 01/10/2018

À như vậy em hiểu rồi. Do public static void xuatHelloWorld là một phương thức tĩnh thì có thể gọi trực tiếp thông qua tên class.phuong_thuc mà do là nằm cùng chung với class BTChuong0_7 rồi nên chỉ cần gọi xuatHelloWorld. Còn với public void xuatHelloWorld thì là một phương thức thường nên phải tạo object mới dùng được.

Bài liên quan
0