강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ghuhan18님의 프로필 이미지
ghuhan18

작성한 질문수

accessor method, mutator method

작성

·

162

·

수정됨

0

accessor method 랑 mutator method 에 대한 혼동이 있어서 질문드립니다.

 

 

mutator method 란 단순히 return 값을 가진다고 해서mutator method 가 아니라

method { } 이 {} 안 스코프 안에서의 계산이 class 의 필드 변수의 값을 바꾸게 하는 경우 mutator method 라고 하는 건가요 ?

 

그렇기 때문에,

String str1 = " Hello " ; 라고 있을때 ,

String str2 = str1.substring( )

String str2 = str1.length( ) 가 있을때, ' String str1 '이라는 객체 안에 있는 값들은 변경 되지 않기 때문에 substring 가 length 는 accessor method 라고 부르는건가요 ?

 

그러면 예를 들어 Scanner scanner = in.nextInt();

에서는 어떤한 이유에서 nextInt() 메서드가 mutator method 인가요 ?

mutator method 의 정의가 객체의 값을 변경시키는 거라고 알고 있는데, 그러면 in 객체의 값을 변경시키는건가요 ?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

Accessor method(접근자 메소드)는 객체의 상태를 읽는데 사용되며, 보통 객체 내부의 값을 반환하는 메소드입니다. 이에 반해 Mutator method(변경자 메소드)는 객체의 상태를 변경하는 데 사용되며, 객체 내부의 필드를 수정할 수 있습니다.

질문하신 내용에 따르면, str1.substring() 메소드와 str1.length() 메소드는 str1이 가리키는 문자열의 값을 변경하지 않고, 새로운 값을 반환하기 때문에 accessor method에 속합니다.

nextInt() 메소드의 경우, 이 메소드는 Scanner 객체의 상태를 변경시키지 않습니다. 대신 사용자로부터 입력을 받아 그 값을 반환하며, Scanner 객체 내부의 위치를 입력 스트림에서 다음 입력 위치로 이동시킵니다. 그래서 일반적으로 nextInt() 메소드를 mutator method라고 하지 않지만, 입력 스트림의 현재 위치를 변경하므로 객체의 상태가 어느 정도 변한다고 볼 수는 있습니다. 그러나 nextInt() 자체가 Scanner 객체의 주요 상태를 변경하는 것은 아니기 때문에, 전통적인 의미에서의 mutator method로 보는 것은 적절하지 않을 수 있습니다.

정리하자면, accessor method는 객체의 정보를 읽기만 하고 변경하지 않으며, mutator method는 객체의 상태를 변경합니다. nextInt()와 같은 메소드는 입력 스트림의 위치를 변경하지만 객체의 주요 상태를 변경하지는 않으므로 일반적으로 mutator method라고 하지 않습니다.

ghuhan18님의 프로필 이미지
ghuhan18

작성한 질문수

질문하기