2013-09-25 16 views
9

Tôi muốn thực thi nhiều hàm tạo, trong khi tạo một đối tượng đơn lẻ. Ví dụ, tôi có một định nghĩa lớp như this-Cách thực hiện nhiều hàm tạo, khi tạo đối tượng đơn

public class Prg 
{ 
    public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     System.out.println("In multiple parameter constructor"); 
    } 
} 

Và tôi đang cố gắng để đạt được nó bằng đoạn mã sau -

public class Prg 
{ 
    public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     Prg(); 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     Prg(b); 
     System.out.println("In multiple parameter constructor"); 
    } 
    public static void main(String s[]) 
    { 
     Prg obj = new Prg(10, 20); 
    } 
} 

Nhưng trong trường hợp này nó được tạo ra lỗi như -

Prg.java:11: error: cannot find symbol 
      Prg(); 
      ^
    symbol: method Prg() 
    location: class Prg 
Prg.java:16: error: cannot find symbol 
      Prg(b); 
      ^
    symbol: method Prg(int) 
    location: class Prg 
2 errors 

Cảm ơn

+0

bài viết này có thể hữu ích quá: http: //www.yegor256. com/2015/05/28/one-primary-constructor.html – yegor256

Trả lời

12

Sử dụng this() thay vì Prg() trong nhà thầu của bạn

+1

Ồ, cảm ơn. Tôi đã tìm kiếm các từ khóa như siêu, để chỉ cùng một lớp. Nhưng tôi đã không thử điều này. Bây giờ nó hoạt động. – CodeCrypt

2

Khi gọi thầu khác Sử dụng this() thay vì Prg()

3

Bạn nên sử dụng this tuyên bố.

ví dụ:

public Prg(int b, int c) 
{ 
    this(b); 
    System.out.println("In multiple parameter constructor"); 
} 
5

Sử dụng this thay vì Prg

public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     this(); 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     this(b); 
     System.out.println("In multiple parameter constructor"); 
    } 
3

sử dụng this keyword.Full chạy mã như sau

public class Prg 
{ 
    public Prg() 
    { 
     System.out.println("In default constructor"); 
    } 
    public Prg(int a) 
    { 
     this(); 
     System.out.println("In single parameter constructor"); 
    } 
    public Prg(int b, int c) 
    { 
     //Prg obj = new Prg(10, 20); 

this(b);  System.out.println("In multiple parameter constructor"); 
    } 
    public static void main(String s[]) 
    { 
     Prg obj = new Prg(10, 20); 
    } 
} 
Các vấn đề liên quan