728x90
toString()은 한번에 썼고, 내용도 원하는데로 조절할 수 있을 정도의 느낌이 왔고
equals() 같은 경우 클래스 비교 쪽은 거의 감 잡았다. 다만, 내용비교 쪽에서 이중 if문 쪽이 조금 이해가 안되는 상태
hashCode() 쪽은 불모지...
간만에 setter, getter 썼는데 찬찬히 다시 쓰다보니 게터세터 반환타입이나 매개변수 여부 등이 해당 역할과 이어져 이해가 좀 깊어진 느낌이다. 세터는 값을 저장해주는 역할이니 값을 받을 매개변수가 필요하고 이를 VO class의 멤버변수(=필드,전역변수)에 전달해줘야하니 this키워드를 이용하여 전역변수에 전달해줘야하는 것이고,
게터는 해당 멤버변수 값을 읽어오게 하니, 리턴이 필요하고 값 을 넣거나 하는 것이 필요없으니 매개변수가 필요없는 것!
게터세터의 사용 목적
가장 큰 이점은 재사용을 위한 캡슐화가 가능해진다는 것
package chap12_Collection.B_Set.model.vo;
public class Dog2 {
private String name;
private double weight;
// default constructor
public void Dog2() {}
// constructor with parameter
public void Dog2(String name, double weight) {
this.name = name;
this.weight = weight;
}
// getter & setter
public void setName(String name) { // 값을 받아 저장하는게 setter니 리턴이 필요x -> void
this.name = name; // 값을 받아야하니 parameter 필요
}
public String getName() { // 해당 멤버변수의 값을 읽을 수 있게하는 역할의 getter이므로
return name; // return이 필요 & 데이터타입 필요
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getWeight() {
return weight;
}
// toString()
@Override
public String toString() {
return name + " "+weight+"kg";
}
// equals()
public boolean equals(Object obj) {
// 이퀄즈의 비교 내용 2가지
// 1.클래스 비교
// 2.내용 비교
// 주소값 비교
// 1.클래스비교
if(this == obj) {
return true;
}
if(obj == null) {
return false;
}
// if(obj == null) {
// return false;
// }else{ // if else문이 있으면 아래 if문에서 에러발생
// return true;
// }
if(getClass() != obj.getClass()) {
return false;
}
// 내용비교
// 1번 멤버변수 name 비교
Dog2 other = (Dog2)obj;
if(name == null) {
if (other.name != null) {
return false;
}
}else if(!name.equals(other.name)) {
return false;
}
// 2번 멤버변수 weight 비교
if(weight != other.weight) {
return false;
}
return true;
}
// hashCode()
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + (name == null ? 0 : name.hashCode());
result = PRIME * result + (int)weight;
return result;
}
}
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Web] boardDetailView 5th (0) | 2022.08.24 |
---|---|
[1일1코딩][Java] 컬렉션 List 6th - 비교 equals(),toString(),hashCode() (0) | 2022.08.23 |
22.08.21 운동기록 (0) | 2022.08.22 |
[1일1코딩][IDE] 인텔리제이 사용 및 익숙해지기 3rd (0) | 2022.08.21 |
[1일1코딩][Java] VO class equals(),hashCoding(), toString(), getter & setter 손코딩 (0) | 2022.08.21 |