2013-11-28 3 views
0

언제든지 메서드를 호출 할 때마다 알 수 있듯이 obj.methodname을 사용하여 개체를 만들고 메서드를 호출합니다.Java : 클래스 이름을 사용하여 메서드를 직접 호출하는 방법

그러나 아래 프로그램은 객체를 만들지 않고 E 클래스의 메서드를 호출합니다. 어떻게 가능합니까? 누구든지이 개념을 이해하도록 도와주십시오.

'아래 코드에서 어떻게 E.test2();을 쓸 수 있습니까? , 내가 그것을 클래스 이름을 사용 E obj=new E(); obj.test2();

class E 
{ 
    int i; 
    static int j; 

    void test1() 
    { 
     System.out.println("From test1"); 
    } 
    static void test2() 
    { 
     System.out.println("From test2"); 
    } 
} 

class F extends E 
{ 
    int m; 
    static int n; 
    void test3() 
    { 
     System.out.println("From test3"); 
    } 
    static void test4() 
    { 
     System.out.println("From test4"); 
    } 
} 

public class G { 
    public static void main(String args[]) 
    { 
     E.test2(); 
     F.test2(); 
    } 
} 
+2

'static' 메소드는'Class'의 인스턴스가 아닌'Class'에 속하기 때문에 클래스 이름으로 호출 할 수 있습니다. '클래스 이름'. 아래 링크로 가서 완전히 읽으십시오 .http : //docs.oracle.com/javase/tutorial/java/javaOO/classvars.html – Deepak

답변

1

해당 클래스의 인스턴스를 생성하지 않고이 방법을 사용할 수 있다는 것을 의미한다 E.test2static로 선언하는 방법. Java를 사용하는 클래스가 너무 많습니다.

는 문서를 참조하십시오 :

Understanding Instance and Class Members

+1

오, 고마워, 나는 내 방법 앞에 '정적'을 보지 못했다. 그래서 나는이 질문을했다. 사실 정적 멤버 클래스 이름을 사용하여 호출 할 수 있습니다. 나는 5 분 후에 만 ​​대답을 받아 들일 수있다. – beginner

1

정적 메소드를 호출 할 수 있습니다 그 클래스의 객체를 필요로하지 않는 있어야한다고 생각합니다.

이 읽어 보시기 바랍니다 : http://introcs.cs.princeton.edu/java/21function/

+0

하지만 클래스 E를 어떻게 말할 수 있습니까? 정적입니까? ' – beginner

+0

클래스는 정적 일 필요는 없습니다. E 안에있는 메도가 있어야합니다. –

+3

'E'는 정적이 아닙니다 (이것은 최상위 클래스에서도 가능하지 않습니다). 정적 인 방법입니다. 'E'는 클래스가'static' 메소드를 가지고 있음을 지정하기위한 것입니다. –

1

TEST2 방법은 클래스 E의 정적 및 정적 방법은 특정 반대하지 특정 클래스, 그리고 그들이 "classname.methodname"구문을 사용하여 액세스 할 수 있습니다. 여기서 methodname은 "classname"의 정적 메소드

관련 문제