2016-06-30 4 views
-2

Java에서 일부 클래스는 new 키워드를 사용하여 인스턴스화해야합니다.일부 클래스는 인스턴스화가 필요하지 않습니다 .. 왜?

new를 사용하여 인스턴스를 생성하는 경우 eclipse 만 객체 뒤에 제안으로 표시됩니다 (eclipse). 그러나 일부 클래스는 클래스 이름과 클래스 이름을 입력하기 만하면됩니다. 제안이 발생합니다.

차이점은 무엇입니까? 특히 내가 말하는거야 클래스는 다음과 같습니다

WebDriverWait - 인스턴스화를 필요로하지 않습니다 - 는 인스턴스화에게

ExpectedConditions이 필요합니다.

+4

'정적'및 '비 ​​정적'방법에 대해 조사하십시오. –

+0

그것은 인스턴스 메소드와 정적 메소드 (클래스 메소드)의 차이점입니다. –

+2

[Java의 정적 클래스] (#stackoverflow.com/questions/7486012/static-classes-in-java) – nautical

답변

-1

자바에서 정적 키워드를 사용해야합니다.

정적으로 메소드를 정의 할 때 객체를 만들 필요가 없으므로 className.methodName()을 직접 호출 할 수 있습니다.

public class add{ 
    public static class addTwoNumber(int a, int b) { 
     return a+b; 
    } 
} 

public class staticTest{ 
    public static void main(String args[]) { 
     system.out.println(add.addTwoNumber(2,2)); 
    } 
} 
+0

의 가능한 복제본 1) Java로 클래스를 정의하는 방법이 아닙니다. 2)'addTwoNumber'는 정적이 아니므로, 그것을 호출하기 위해'add'를 인스턴스화해야합니다. –

+0

@AndyTurner 오오 고쳐서 – suresh

0

다른 게시물에서 언급 한 것과 마찬가지로이 기능은 static 키워드의 영향을받습니다.

  1. 클래스 레벨이
  2. 는 인스턴스 레벨이

이 클래스 수준 변수가/방법이 키워드 static에 의해 접두어가 정의 : 객체 지향 프로그래밍에서, 우리는 즉, 변수/방법의 두 가지 유형을 가지고 인스턴스 수준 변수/메소드는 그렇지 않습니다. 우리는 클래스의 다른 인스턴스간에 차이가없는 것을 정의하고자 할 때 정적 변수/메소드를 사용합니다. 우리는 클래스의 인스턴스를 생성하고 참조를 사용하여 정적 메소드/변수를 호출 할 수 있지만, 관례에 따라 정적 변수/메소드가 특정 인스턴스가 아닌 클래스에 속하기 때문에이를 피할 수 있습니다.

정적 키워드 here에 대해 자세히 알아볼 수 있습니다.

+0

에 대해 고맙다는 것을 잊어 버렸습니다. 프로그램하기 쉽도록 모든 방법보다 정적을 추가 할 수 있습니까? –

+0

아니. 왜 그렇게하고 싶니? –

0

실제로 매우 간단합니다.
클래스가 생성 될 때마다 (즉, 클래스가 인스턴스화 될 때마다) 런타임 시스템은 인스턴스 멤버이라고하는 해당 객체/인스턴스에 대한 모든 변수 및 클래스 메소드의 복사본을 만듭니다. 이제 우리 객체는이 사본 멤버만을 사용합니다. 이 회원들에게 액세스하려면 obejctname.member을 사용하십시오.
대조적으로, 클래스 구성원이라고하는 것이 있습니다. 클래스 멤버는 정적 인 키워드를 사용하여 정의됩니다. 이것은 클래스가 생성되는 인스턴스의 수와 관계없이 클래스가이 멤버의 복사본 하나만 생성한다는 것을 의미합니다. 이 회원들에게 액세스하려면 classname.staticmember을 사용하십시오. 간단한 예를 촬영

:
는 우리는 사람라는 클래스가있다. 이름, 나이, run(), sleep()과 같은 인스턴스 메소드와 같은 인스턴스 변수가 있습니다. 클래스에는 하나의 정적 메서드 salary()가 포함되어 있습니다.

public class Person { 

    //Instance Members 
    private String name; 
    private int age; 

    public void run() { 

    } 

    public void sleep() { 

    } 

    //Class Member 
    public static void salary() { 

    } 

    public static void main(String[] args) throws IOException { 
     Person person1 = new Person(); 
     Person person2 = new Person(); 

     //accessing instance members 

     String person1NameInMain = person1.name; 
     int person1AgeInMain = person1.age; 

     person1.run(); 
     person2.sleep(); 

     Person.salary(); // accessing static member 

    } 
} 

그게 전부입니다.나는 이것이 도움이되기를 바랍니다.

관련 문제