2013-08-01 55 views
9

Tôi mới trong lập trình và tôi muốn biết tôi đã sai khi tạo một đối tượng ở đâu. Dưới đây là mã:Làm thế nào để khởi tạo một đối tượng trong java?

public class Testing{ 
    private int Sample(int c) 
    { 
     int a = 1; 
     int b = 2; 
     c = a + b; 
     return c; 
    } 
    public static void main(String []args) 
    { 
     Sample myTest = new Sample(); 
     System.out.println(c); 
    } 
} 
+0

Biến 'c' có thể truy cập được trong phạm vi của phương pháp' Mẫu'. Bạn đã cố truy cập nó trong phạm vi này. –

Trả lời

15

Không có lớp học nào trong mã của bạn. Cái mà bạn đã khai báo là một phương thức riêng.

// private method which takes an int as parameter and returns another int 
private int Sample(int c) 
{ 
    int a = 1; 
    int b = 2; 
    c = a + b; 
    return c; 
} 

Với đoạn hiện nay, Bạn cần phải nhanh chóng lớp Testing và tận dụng các phương pháp Sample. Lưu ý rằng định nghĩa lớp học của bạn được bắt đầu bằng từ khóa lớp, trong trường hợp này là class Testing.

public class Testing{ 
    private int Sample(int c) 
    { 
    int a = 1; 
    int b = 2; 
    c = a + b; 
    return c; 
} 
    public static void main(String []args) 
{ 
    Testing t = new Testing(); // instantiate a Testing class object 
    int result = t.Sample(1); // use the instance t to invoke a method on it 
    System.out.println(result); 
} 
} 

Nhưng điều đó không thực sự có ý nghĩa, phương pháp Sample của bạn luôn luôn trả về 3.

Bạn đang cố gắng để làm một cái gì đó như thế này:

class Sample { 
int a; 
int b; 

Sample(int a, int b) { 
    this.a = a; 
    this.b = b; 
} 

public int sum() { 
    return a + b; 
} 
} 

public class Testing { 
public static void main(String[] args) { 
    Sample myTest = new Sample(1, 2); 
    int sum = myTest.sum(); 
    System.out.println(sum); 
} 
} 
+2

Bạn biết đấy, bạn nói đúng, nó KHÔNG có ý nghĩa, nhưng hey, tôi đang học! – user2640722

+1

Thực ra, vâng! Đó chính là điều tôi muốn làm! Awesomesauce! – user2640722

1

Bạn instantiating một cách chính xác với new từ khóa, Nhưng tên calss của bạn và phương pháp cách gọi là sai

Testing myTest = new Testing(); 
    int result =myTest.Sample(1); //pass any integer value 
    System.out.println(result); 
1

mẫu không phải là một lớp học, nó chỉ là một phương pháp. Bạn không thể tạo các phiên bản của nó. Bạn chỉ chạy nó -

int sample = Sample(3); 

Nếu bạn muốn mẫu là một lớp, hãy xác định nó là một lớp.

Trong trường hợp của bạn, phương pháp không tĩnh nên bạn không thể truy cập trực tiếp từ phương pháp tĩnh Main. Làm cho nó tĩnh để bạn có thể truy cập nó. Hoặc chỉ cần tạo một phiên bản Thử nghiệm mới và sử dụng nó -

Testing testing = new Testing(); 
int sample = testing.Sample(3); 
1

Phương pháp mẫu trả về số nguyên, do đó nhận kết quả và sử dụng ở bất kỳ đâu.

public static void main(String []args) 
{ 
    int myTest = Sample(4555);//input may be any int else 
    System.out.println(myTest); 
} 
1

Đây là cách bạn nên làm điều này.

public class Testing{ 
public int Sample(int c) 
{ 
    int a = 1; 
    int b = 2; 
    c = a + b; 
    return c; 
} 
public static void main(String []args) 
{ 
    // Creating an Instance of Testing Class 
    Testing myTest = new Testing(); 
    int c =0; 
    // Invoking the Sample() function of the Testing Class 
    System.out.println(myTest.Sample(c)); 
} 
2

Tôi nghi ngờ bạn thực sự muốn tạo đối tượng.

Từ đoạn mã của bạn, tôi hiểu rằng bạn muốn chạy 'phương pháp' có tên Sample có thêm hai số. Và trong JAVA bạn không cần phải khởi tạo các phương thức. Đối tượng là các thể hiện của class. Một phương thức chỉ là một hành vi mà lớp này có.

Đối với yêu cầu của bạn, bạn không cần phải làm rõ một cách rõ ràng mọi thứ khi bạn chạy mã được biên dịch JAVA tự động tạo một thể hiện của lớp của bạn và tìm phương thức main() để thực hiện.

Có lẽ bạn muốn chỉ sau:

public class Testing{ 
    private int sample(int a, int b) { 
     return a + b; 
    } 
    public static void main(String[] args) { 
     int c = sample(1, 2); 
     System.out.println(c); 
    } 
} 

Lưu ý: Tôi đã thay đổi Sample-sample khi nó được chấp nhận chung thực hành để bắt đầu một tên phương pháp với chữ thường và tên lớp với một lá thư chữ hoa, vì vậy Testing là chính xác ở mặt trước đó.

Các vấn đề liên quan