2011-02-11 3 views
1

다른 클래스의 메소드를 참조하여 다른 클래스의 return 문에서 사용하려고합니다. 현재, 내가 얻는 것은 다음과 같은 오류입니다. 비 정적 메서드 getBalance는 정적 컨텍스트에서 참조 할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.Java 비 정적 메소드 getBalance를 정적 컨텍스트에서 참조 할 수 없습니다.

public void bob() 
    { 
    return "Accountno.:" + super.toString() + Account.getBalance(); 
    } 
+0

설명하시는 두 클래스의 클래스 구조를 표시해주십시오. – MindBrain

답변

4

getBalance은 인스턴스 메서드입니다. 메소드의 요점은 특정 Account 객체의 균형을 제공하므로 getBalance를 호출하기 위해 Account 인스턴스가 필요하다는 것입니다. 클래스 이름 앞에 붙은 메소드를 호출 할 때 '정적 컨텍스트'가 의미하는 바는 클래스에서 정적 메소드를 호출한다는 의미입니다.

과학적으로 생성자를 호출하고 다른 게시물과 같이 새 개체에서 getBalance 메서드를 호출하면 작동하지만 유용한 데이터를 제공하지는 않습니다. 원하는 계정 (데이터베이스 쿼리 등)을 얻는 방법을 알아야합니다.

계정을 하위 클래스로 만들려고하십니까? bob 메서드는 Account에서 집에서 볼 수있는 toString과 매우 비슷하기 때문에 계정을 서브 클래 싱하는 경우 getBalance에 대한 호출을 Account.으로 시작하지 않아도되고 또는 getBalance을 사용할 수 있습니다 (this이 포함됨).

+0

추가 :'Account'의 내부 클래스 (간단한'this'가 작동하지 않는 곳)에 있다면'Account.this.getBalance()'라고 쓸 수 있습니다. –

2

getBalance()을 호출하기위한 개체 인스턴스가 있어야합니다. 당신은 고정 된 메도와 같이 부르고 있습니다. 이 작업을해야합니다 :

Account acc = new Account(); 
acc.getBalance(); 
0

이 계정, 계정의 인스턴스를 가지고와

Account account = new Account(); 
account.getBalance(); 

전화 또는 정적로 운전 방식 getBalance를 선언되는 일을 적절한 방법.

0

정적 인 것처럼 비 정적 메서드를 호출하려고합니다. 계정 클래스가 있다고 가정하면 Account.getBalance()는 정적 getBalance() 메소드에서만 작동합니다. 비 정적 getBalance() 메소드를 호출하려면 Account 인스턴스가 필요합니다.

관련 문제