클래스와 해당 클래스의 인스턴스의 차이점을 이해해야합니다. 길거리에서 자동차를 보면 어떤 모델이나 유형을 볼 수 없어도 자동차라는 것을 즉시 알 수 있습니다. 이것은 당신이 보는 것을 클래스 "car" 와 비교하기 때문 입니다. 이 클래스에는 모든 자동차와 비슷한 것이 포함되어 있습니다. 템플릿이나 아이디어로 생각하십시오.
동시에, 당신이 보는 자동차는 당신이 기대하는 모든 속성을 가지고 있기 때문에 "car"클래스의 인스턴스입니다 : 그것을 운전하는 누군가가 있고, 엔진, 바퀴가 있습니다.
따라서 클래스는 "모든 자동차는 색상을가집니다"라고 말하고 인스턴스는 "이 특정 자동차는 빨간색입니다"를 말합니다.
OO 세계에서는 클래스를 정의하고 클래스 내부에서 유형 필드를 정의합니다 Color
. 클래스가 인스턴스화되면 (특정 인스턴스를 생성 할 때) 메모리가 색상을 위해 예약되며이 특정 인스턴스에 색상을 부여 할 수 있습니다. 이러한 속성은 고유하기 때문에 비 정적입니다.
정적 필드와 메소드는 모든 인스턴스와 공유됩니다. 이들은 특정 인스턴스가 아닌 클래스에 특정한 값을위한 것입니다. 메서드의 경우 일반적으로 전역 도우미 메서드입니다 (예 :) Integer.parseInt()
. 필드의 경우 일반적으로 상수입니다 (예 : 자동차 유형, 즉 자주 변경되지 않는 제한된 세트가있는 항목).
문제를 해결하려면 런타임에서 인스턴스의 메모리를 예약 할 수 있도록 클래스의 인스턴스를 인스턴스화 (객체 생성)해야합니다 (그렇지 않으면 다른 인스턴스가 원하지 않는 서로 덮어 쓰기).
귀하의 경우이 코드를 시작 블록으로 사용해보십시오.
public static void main (String[] args)
{
try
{
MyProgram7 obj = new MyProgram7 ();
obj.run (args);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
// instance variables here
public void run (String[] args) throws Exception
{
// put your code here
}
새 main()
메소드는 포함 된 클래스의 인스턴스를 작성합니다 (이상하게 들리지만 main()
인스턴스 대신 클래스로 작성 되었으므로 이를 수행 할 수 있음 run()
). 그런 다음 인스턴스 메소드 ( ) 를 호출합니다 .
C
. 그러나 그것은 좋은 것이 아닙니다. Java를 객체 지향 언어로 사용되는 방식으로 사용하십시오.