[자바] 메소드 공부하기2

heegon·2025년 7월 5일

JAVA

목록 보기
12/20
  • 객체 생성과 static, instance 메소드의 개념이 확실히 자리를 잡지 못해서 추가로 코드를 쳐보면서 공부해 보았습니다.

외부 클래스에 선언된 static 메소드 public class에서 사용하기

class ClassA {
	public static void disp() {
		System.out.println("ClassA disp()");
	}
}

public class StudyJava {
	
	public static void main(String[] args) {
		ClassA.disp();
	}

}

ClassA 가 disp()라는 static() 메소드를 가지고 있고,
StudyJava가 main() 메소드 (main메소드는 무조건 static) 를 가지고 있는 상황이다.

static 메소드 내부에서 static 메소드는 객체 생성 없이 사용 가능하고, instance 메소드(not static)는 객체 생성 이후에 사용 가능하다.

클래스명.메소드명(); 이와 같은 형식으로 disp()를 담고 있는 ClassA의 객체 생성 없이 disp() static 메소드를 사용 가능하다.


객체 생성의 의미

객체를 생성한다는 것은
만약 메소드를 사용하고자 한다면 해당 메소드의 객체를 생성하는 것이 아니라, 해당 메소드를 담고 있는 클래스의 객체를 생성한다는 것이다. 객체란 클래스 내부에 있는 필드와 메소드에 접근할 수 있는 실체라고 볼 수 있다.


외부 클래스에 선언된 Instance 메소드 public class에서 사용하기

main() 메소드 내부에서 객체 생성하여 사용하기

class ClassA {
	public void disp() { //instance 메소드
		System.out.println("ClassA disp()");
	}
}

public class StudyJava {
	
	public static void main(String[] args) {
		ClassA ca = new ClassA();
		ca.disp();
	}

}

main() 메소드 외부에서 객체 생성하여 사용하기

class ClassA {
	public void disp() { //instance 메소드
		System.out.println("ClassA disp()");
	}
}

public class StudyJava {
	
	ClassA ca = new ClassA();
	
	public static void main(String[] args) {
		StudyJava sj = new StudyJava();
		sj.ca.disp();
	}

}

객체에 대해서 정확히 이해했다면 위 2개 코드의 차이점을 알 수 있다.
위의 코드에서는 static인 main메소드 내부에 ClassA 의 객체를 생성했기 때문에 프로그램 실행과 동시에 ClassA의 객체가 생성되고 그 내부에 있는 메소드도 사용 가능하다.
아래 코드에서는 ClassA의 객체를 main() 메소드 외부이자, main()메소드를 담고 있는 public class 내부에 만들어줬다. 따라서 ClassA의 객체 ca는 public class의 필드처럼 다뤄진다.
ca를 사용하기 위해서 ca가 담겨있는 StudyJava의 객체를 main()메소드 내부에서 다시 선언해줘야 사용 가능한 것이다.

profile
❤️

0개의 댓글