2017-09-13 7 views
-3

부모 클래스의 인스턴스를 생성하면 직접 상속이 아니기 때문에 다른 패키지의 상속 된 메서드에 액세스 할 수 없습니다. 우리의 자식 메소드는 정적이지만 부모 클래스 메소드는 정적이 아니기 때문에 직접 정적이 아닌 정적을 사용할 수도 있습니다. 전 당신이 double n=sub(3,2);처럼 직접 인스턴스 메서드를 호출 할 수 없습니다 모든다른 패키지의 정적 메소드 (예 : main 메소드)에서 protected 상속 된 비 정적 메소드에 액세스하는 방법은 무엇입니까?

package example; 

import classacees.Thread1; 

public class Ece extends Thread1 { 

     public static void main(String[] args) { 

double n=sub(3,2); // error -> cant make a static reference to non static method. 
System.out.println(n); 

} 
+0

당신이'sub'를 작성하지 왜 처음에 대답 할 수 정적으로 왜 자식 클래스 (귀하의 경우'main')에서 정적으로 메서드를 사용합니까? – nullpointer

+0

귀하의 질문에 대해 명확하지 않습니다. – jdv

+0

두 번 n = sub (3,2) 대신 double try n = Thread1.sub (3,2) – Assafs

답변

0

먼저

package classacees; 

public class Thread1 { 

protected double sub(double a, double b) { 

return (a - b); 

} 

및 ...; 그 때문에 당신은 물건이 필요합니다. 당신의 쿼리

당신이 하위 클래스의 인스턴스에서 보호 방법을 액세스하여이를 수행 할 수 있습니다 :

public class Ece extends Thread1 { 
    public static void main(String[] args) { 
     Ece ece = new Ece(); 
     double n = ece.sub(4, 9); 
     System.out.println(n); 
    } 

} 

희망이 도움이 ..