2017-01-15 2 views
-6

(자바 초보자) 나는이 질문을 정확히 찾을 수 없었다. 나는 두 개의 파일 (phseudo 코드)와 함께 프로젝트를 :네이티브 메소드와 같은 다른 클래스의 메소드를 사용합니까?

우선 자바 파일 (클래스)

public class A { 
    public void xyz() { System.out.println("hello");} 
} 

둘째 자바 파일 (클래스)

public class B Extends ZZZZZ { 
    public void callme() { 
     xyz(); // <----------------- I want to call in this way, but It cant be done like this. 
    } 
} 

어떻게 성공적으로 호출 할 xyz()를 만들기 위해 (마치 b() 클래스 내부에 정의 된 것처럼 !!).

p.s.

a.xyz(); 
+0

* "전화를 걸면 오류가 발생합니다."* 어떤 오류가 있습니까? –

+2

또한 :이 원래 코드는이 '알 수없는 클래스'문자열'또는 Shift 키를 신뢰할 수 있습니까? –

+2

'new'는 변수에 대한 좋은 이름이 아닙니다 ... – luk2302

답변

1

좋아 몇 가지 가능성 :

인스턴스화 A :

A a=new A(); 
a.xyz(); 

(당신이 원하지 않는) 다시,이 같은 앞에 클래스 이름으로 호출하지 않으

유전 :

public class B extends A {...} 

public class A extends ZZZZZ{...} 

그래서 여전히 ZZZZZ를 확장 할 수 있습니다.

인터페이스 :

public interface A{...} 

public class B extends ZZZZZ implements A{...} 

정적 방법 : xyz이에 같은

public class A{ 
    public static void xyz() 
    { 
    System.out.println("hello"); 
    } 
} 

public class B{ 
    public void callme() 
    { 
     A.xyz()); 
    } 
} 
3

인스턴스 메소드의 모든 생각, 당신은에서 A의 인스턴스의 상태를 사용하는 것입니다 이 인스턴스를 다음과 같이 인수로 전달하지 않고도 메서드를 호출 할 수 있습니다.

... String xyz(A thisInstance, ...) {...} 

대신 당신은 사용이 실질적으로 함수에 인수하기 때문에 당신이 A의 인스턴스가 필요한 이유를

A thisInstance = ...; 
thisInstance.xyz(...); 

은 그입니다.

static String xyz(...) {...} 

는 그런 다음 A의 인스턴스를 통과하지 않고 호출 할 수 있습니다 :

당신이하지 필요에게 A의 인스턴스를 할 경우


그러나 정적 방법을 만들 수 있습니다

A.xyz(...); 

정적 가져 오기를 사용하면 A :

를 쓸 필요가 없습니다.
import static A.xyz; 

... 

xyz(...); 
+0

은 A와 같은 모든 함수를 가져 오는 방법입니다 (A의 개별 메소드가 아님) –

+1

@ T.Todua 예, 와일드 카드를 사용할 수 있습니다 :'import static A. *; ' –

+0

마지막 메소드 doesnt work ...'fidn fidn symbol method xyz()'를 보여줍니다. –

0

이것은 도움이 될 것입니다.

class A { 
    public void xyz() { 
     System.out.println("hello"); 
    } 
} 
class ZZZZZ extends A{ 

} 
class B extends ZZZZZ { 
    public void callme() { 
     xyz();// <----------------- calling this shows error 
    } 
} 
+1

제발, 하나의 답변에 많은 답변 대신 게시 .. 어쨌든 고마워,하지만 해결책이 아닌 것 같아,'ZZZZZ'는 이미 프로젝트의 등록 된 클래스입니다. –

관련 문제