• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

클래스 내부의 인스턴스 메서드 끼리의 호출

22.07.03 22:14 작성 조회수 157

0

이 강의로 자바 기초를 다지면서 자바 알고리즘 강의도 듣고있습니다. 강의를 듣다가 궁금해진게 한 클래스 내부에서 static main 메서드 안에서 인스턴스 메서드를 호출할때는 Main클래스를 생성해서 호출하지만 재귀함수나 두개 이상의 인스턴스 메서드끼리 상호작용 할 때는 객체를 생성하지 않고 클래스 이름도 붙이지 않고 바로 메서드를 사용할수있는데 이는 어떤경우일까요? 답변주시면 감사하겠습니다.

아래 코드는 예시입니다.

solution 메서드에서 DFS메서드호출하는부분이 궁급합니다

class Main {
	static int n,m,answer =0;
	static int[] dx = {-1, -1, 0, 1, 1, 1, 0,-1};
	static int[] dy = { 0, 1, 1, 1, 0,-1,-1,-1};
	public void DFS(int x, int y, int[][] board) {
		for(int i=0;i<8;i++) {
			int nx=x+dx[i];
			int ny=y+dy[i];
			if(nx>=0 && nx<n && ny>=0 && ny<n && board[nx][ny]==1) {
				board[nx][ny]=0;
				DFS(nx,ny,board);
			}
		}
	}
	public void soulution(int[][] board) {
		for(int i=0;i<n;i++) {
			for(int j=0;j<n;j++) {
				if(board[i][j]==1) {
					answer++;
					board[i][j]=0;
					DFS(i,j,board);
				}
			}
		}
	}
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		n=kb.nextInt();
		int[][] arr = new int[n][n];
		for(int i=0;i<n;i++) {
			for(int j=0;j<n;j++) {
				arr[i][j]=kb.nextInt();
			}
		}
		T.soulution(arr);
		System.out.println(answer);
 	}                 
}   

답변 1

답변을 작성해보세요.

0

Main T=new Main();을했기 때문에 이미 메서드는 메모리에 올라가 있는 상태이구요. 또 같은 클래스내에 2개의 메서드가 있다면 1의 메서드에서 2의 메서드는 메서드 이름으로 호출이 가능합니다~^