인프런 커뮤니티 질문&답변
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라고 하지 않습니다.




