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
반응형

+ Recent posts