자바 고수님들께 메소드에 대해서 질문합니다
자바에서 get() 메소드와 set() 메소드의 기능 및 차이점을 알고 싶습니다. 알기 쉽게 설명좀 해주세요 ㅜㅜ
----------------------------------------------------------------------------
Get 메소드는 이전에 기억된 데이터나 특정한 데이터를 가져올때 씁니다.
Set메소드는 함수에 특정값을 집어넣을때 사용합니다.
공부법
생활코딩 (opentutorials.org) 여기에 가셔서 기본과 개념을 복습하세요.
그리고나서 GitHub: Where the world builds software · GitHub 여기에 가셔서
구현하고 싶은 기능에 관련된 소스나 아니면 참고하실만한 소스를 구하셔서 그걸로 연습하세요.
전혀 아무런 참고할 소스조차 없다면 아무소스나 가져와서 분석하시면서 알고리즘을 학습하세요.
get, set은 단순 메소드라기보다는 코드의 은닉성과 구현의 편리성 제공을 위해 한든 메소드 정도입니다.
get : 필드로 부터 값을 읽어옴
set : 필드에 값을 할당
결국에 리딩이냐, 라이트냐의 차이죠
특정 클래스에 있는 변수의 값을 그냥 가져오는 것은 은닉성에 위배되니 메소드를 태운다 = get
특정 클래스에 있는 변수의 값을 수정하는것은 은닉성 위배뿐만 아니라 위험하기도하니 메서드른 태운다 set
Set은 매개변수가 있겠죠?
Set 담다
Get 꺼내다
글에서 볼수 있듯이 차이점 별도로 설명하지 않아도될만큼 명확하죠?
Vo를 선언하고 vo안의 객체에 값을 지정하거나 지정된 값을 가져올때 set 과 get을 사용하죠
주로사용하는 개발툴 이클립스에서는 Vo에 변수를 선언하면 getter와 setter를 손쉽게 만들어주는 기능도 있구요
이미 값이 존재하는데 set을 해버리면 덮어씌어져 버리니 주의하시구요
Get과 set을 잘 사용해야 프로그래밍을 잘 할수있습니다
기본이지만 중요합니다
안녕하세요.
Java에서의 get() set()을 이용하는 이유를 알고 싶으신 건지 실제 기능을 알고 싶으신 건지 혼란이 좀 오네요.
다른 class의 내부 변수에 접근하기 위해 해당 class에서 제공해주는 메소드가 get() set() 메소드입니다.
get() 메소드는 변수의 값을 조회 할 때, set() 메소드는 변수에 값을 셋팅 할 때 사용됩니다.
찾아보니 확인해 보시면 좋을 링크가 있네요.
class의 멤버변수의 값을 설정할때 set()메소드를 사용하고 멤버변수의 값을 가져올때 get() 메소드를 사용합니다.
보편적으로 사용하는 네이밍 규칙이라고 보시면됩니다.
get()메소드를 값을 설정하는 용도로 사용한다고 해서 문제가 될것은 없습니다만 여러사람이 공동으로 작업한다면 메소드 이름으로 의미를 파악하지 못하는 문제가 발생하겠죠 ^^
안녕하세요..
글자그대로 get() 은 값을 가지고 올때 쓰고 set()은 값을 넣어줄때 사용합니다. 자바 뿐 아니라 다른 언어에서도 그런식으로 많이 사용합니다.
예를 들면 아래 예시처럼 name을 선언하고
값을 넣을 때는 setName("홍길동");
값을 가져올때는 getName();
이런식으로 사용을 합니다.
=========================
String name;
public String getName() {
return name;
}
public void setName(String nm) {
name = nm;
}
간단히 말한다면 아래와 같이 정의 할 수 있습니다.
get() - 읽기
set() - 쓰기
getter와 setter를 사용하는 이유는 객체 지향 프로그래밍에서 객체의 데이터를 함부로 수정할 경우 무결성이 깨질 수 있기 때문입니다.
그래서 데이터는 private 하게 접근이 불가능하도록 하도록 하고 setter와 getter를 이용하여 데이터를 제어하도록 합니다.
만약 한국 이름을 저장할 경우 영문이나 숫자, 특수문자는 들어가면 안되기 때문에 setter에서 한글만 입력할 수 있도록 제어할 수 있습니다. 만약 koreaName이 public으로 정의되어 외부에서 접근할 수 있다면 아무런 필터 없이 데이터가 입력받게 될 수 있습니다.
public class data { private String koreaName; public String getKoreaName(){ return koreaName; } public void setKoreaName(String koreaName) { this.koreaName= koreaName; } }어디서부터 설명을 드려야할지 어렵네요; 우선 자바에서의 메소드라함은 하나의 class객체 내에 정의된 하나의 동작묶음? 이라고 말할 수 있는데요.. 예를들어 자동차 라는 class가 있다면 악셀을 밟는다는 메소드와 브레이크를 밟는다 는 메소드를 생성할 수 있고 그 메소드들 안에 구체적인 동작을 기술하는 것입니다. 악셀을 밟는다 는 메소드 안에는 자동차의 속도를 1초마다 5키로씩 증가시킨다 와 같이 상세한 동작을 기술하는것이죠.
질문자님께서 질문하신 get,set 메소드도 동일한 메소드라고 보시면 되고 통상 get(), set()의 쓰임새는 class안에 정의된 특정 변수의 값을 가지고 오거나(get) 변수에 값을 할당(set)하는 목적으로 사용되는 네이밍이긴 합니다.
다시말해 dog라는 class가 있다면 일빈적으로 get set을 아래와 같이 사용들을 합니다.
class dog{
private String name = "";
// 개 이름을 얻어오는 메소드
public String getName(){
return this.name;
}
// 개 이름을 설정하는 메소드
public void setName(String dogName){
this.name = dogName;
}
}
객체 지향의 개념입니다.
자동차의 속도 speed를 변경해야된다고 생각해봅시다.
하지만 단순히 speed라고 전역으로 선언하면 어떤 일이 발생할까요?
자동차의 속도가 아닌 트럭의 속도인지 아닌지 다른 개발자가 알 수가 없습니다.
따라서 Car.getSpeed() 로 하면 명확하게 자동차의 속도를 알 수 있습니다.
그리고 자동차의 속도도 Car.setSpeed(speed)로 명확하게 자동차의 속도를 변경할 수 있습니다.
이런 개념을 정보 은닉이라고 하며, 확장성이 좋아지기 때문에 사용합니다.
안녕하세요
보통 자바를 시작하시면 get(), set() 메소드 사용하는 법 부터 배우기 시작하실 텐데요.
class 내의 변수를 private으로 선언하는 경우, 직접적으로 수정하는 것이 아닌 메소드를 사용해서 변수 값을 변경하거나 가져오는 것을 말합니다.
예를 들어서 Sum.class가 있다고 가정한다면 아래와 같이 Sum class내에 A와 B라는 private 변수가 존재합니다.
private 변수는 외부 class에서 직접적으로 수정 할 수 없기 때문에, set 메소드를 사용해서 값을 설정해 줄 수 있으며,
이 private 변수의 값을 외부 class에서 알고 싶을 때는 get메소드를 사용해서 값을 가져오는 것이라고 생각하시면 됩니다.
public class Sum()
{
private int A = 0;
private int B = 0;
Sum() {
A = 0;
B = 0;
}
public void setAValue(int a) {
A = a;
}
public void setBValue(int b) {
B = a;
}
public int getAValue() {
return A;
}
public int getBValue() {
return B;
}
public int getSumABValue() {
return A+B;
}
}
안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.
자바는 객체지향적 프로그래밍 언어 입니다. 객체는 현실에 존재하는 것들을 데이터화 시킨 것 입니다.
그리고 객체와, 객체의 값을 변화 시키는(객체의 상태를 변화 시키는) 메서드를 묶어서 클래스로 만듭니다.
질문자님이 질문한 set()은 객체의 상태를 변화시켜주는 메서드 입니다. 예를 들어 car.setCarName('sonata') 이라고 하면 자동차의 이름을 sonota로 변화시켜 주는 것 입니다. 그리고 get()은 객체의 상태를 불러오는 메서드 입니다. car.getCarName()을 하게 되면 sonata 라는 값을 반환하게 됩니다.
답변이 도움이 됐으면 합니다. 좋은 하루 되세요!
안녕하세요.
클래스 내의 변수는 private으로 선언하여 외부에서 바로 접근 할 수 없도록 캡슐화 (은닉화)를 합니다.
외부에서 바로 접근할 수 없기 때문에 get (조회), set (변경) 메소드를 만들어 외부에서 사용할 수 있게 해 줍니다.
public class User { private String name; // get : name 변수를 조회할 때 사용 // return 으로 name을 전달 public Object getName() { return name; } // set : name 변수의 값을 변경할 때 사용 // 새로운 값을 argument로 받아서 처리 public void setName(String name) { this.name = name; } }