왕초보적인 메소드 호출 질문입니다ㅠ 꼭답변해주세요!
미국녀
public class GradeBook
{
private String courseName;
public void setCourseName(String name)
{
courseName = name;
}
public String getCourseName()
{
return courseName;
}
public void displayMessage()
{
System.out.printf( Welcome to the grade book for \n%s!\n,getCourseName);
}
}
import java.util.Scanner;
public class GradeBookTest
{
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
GradeBook myGradeBook = new GradeBook();
System.out.printf( Initial course name is: %s\n\n,myGradeBook.getCourseName());
System.out.println(Please enter the course name: );
String theName = input nextLine();
myGradeBook.setCourseName(theName);
System.out.println();
myGradeBook.displayMessage();
}
}
위에 첫번째 클래스에서 초록색으로 된 getCourseName을 사용하는 이유가 궁금합니다
그냥 인스턴스 선언한 courseName을 입력해도 프로그램은 동일하게 돌아가는 것으로 알고 있는데
왜 굳이 getCourseName을 사용하는지 그 이유와 사용할 때의 장점을 알고 싶습니다.
좀 원리적인 부분으로 알려주세요;;부탁드려요!!
-
아라
감사합니다
-
매1혻적
댓글이 길어져서 좀 더 기술합니다. 예를 들어, getCourseName() 함수의 return값을 대문자로만 한정한다거나, setCourseName()함수의 입력값을 필터링할 때, 특수문자를 제외해야 한다거나 등등, 변수에 대한 선처리, 후처리를 일관되게 한다는 관점이라면 같은 클래스 내에서의 접근이라 해도 변수를 일관되게 접근한다는 관점에서 해당 메소드를 호출하는 것이 바람직합니다. 이런 부분들은 사실, 객체지행방법론이 왜 좋으냐라는 논리적인 설명보
-
한국드립
컥..버섯수다님//ㅡ_ㅡ; 제가 아래분이 되는군요... 버섯수다님의 설명도 맞고요. 이런 부분은 이것이 답이다라고 하는 것이 아닙니다. 단, 확실히 말씀드려서 좋은 프로그래머의 습관이라고 생각하면 편하겠습니다. 일단, 변수(coursename)을 직접 접근(read/write)하는 부분에 있어서 객체지향적인 프로그램을 만드시는 것이라면 클래스의 멤버 변수를 직접 접근을 막아주는 것이 객체에 대한 기본적인 접근입니다. 물론 장점/단점 모두 있습니다만 우선
-
데빌의눈물
뭐... 논란이 많은 부분인지라....
getXXXX/setXXXX 메소드를 만드신 이유는...
private로 선언된 courseName 필드를 외부에서 직접 접근할 수 없도록 막기 위함입니다.
다만, 같은 클래스에서 getXXX메소드로 접근할지..
직접 필드명으로 접근할지는 조금 고민해 봐야 할 수 있지만...
아무래도 getXXX메소드롤 호출해서 실행하는 것보다는
courseName 필드를 직접 이용하는게 속도면에서는 이득이겠지만...
필드명이 변