값을 미리 설정하면 값이 없을 때 한 번만 실행되므로 변수는 선언만 한다.
private String productName;
private int price;
public void setProductName(String productName) {
this.productName = productName;
}
public void setPrice(int price) {
if(price >= 0) {
this.price = price;
}
}
return : 데이터를 반환하며 종료
void : 반환값이 없음 (실행 결과가 없음) != null : 대상 값이 없음
public String getProductName() {
return this.productName;
}
public int getPrice() {
return this.price;
}
double, boolean 타입 예시
public double getAverage() {
return (double)getTotal() / 2;
}
public boolean isPass() { // boolean은 getPass 보다 주로 isPass로 사용한다.
return getScore() >= 40 && getAverage() >= 40 && getAverage() >= 60;
}
생성자에서도 설정 시 setter 메소드를 사용하도록 한다.
생성자 자동완성 ( 생성자는 통로를 만들어주는 역할을 한다. / 공통으로 다 사용하는 필드여도 명시적으로 생성자는 만들어줘야 한다.)
public Toy(String productName, int price) {
this.setProductName(productName);
this.setPrice(price);
}
아래 두 가지 방법 다 가능함.
void output() {
System.out.println(this.productName);
System.out.println(this.price);
// 외부 클래스에서 생성자를 불러오고 싶으면 getProductName을 사용함.
System.out.println(this.getProductName());
System.out.println(this.getPrice());
}
// 메인 클래스 객체 생성
Product p1 = new Product("시리얼", 35000);
// 메인 클래스 데이터 출력
p1.output();
1번 조건이 많을 경우 괄호가 많아지는 단점.
2번 조건이(return; 해야 하는 값) 많을 경우 사용하기에 적합.
2번 괄호안에 괄호가 중복으로 생기는 코드로 작성되지 않아 적합.
// 1번
void setKorean(int korean) {
if(korean >= 0 && korean <= 100) {
this.korean = korean;
}
// 2번
if(score < 0 || score > 100) {
return; // 실행 종료
}
this.score = score;
}
// 가상의 Getter 메소드를 만들어 개발을 편하게 한다.
//-> total 이라는 필드는 없지만 total을 계산해서 반환하는 getTotal()을 만든다.
int getTotal() {
return this.getKorean() + this.getEnglish() + this.getMath();
}
//-> average라는 필드는 없지만 average를 계산해서 반환하도록 getAverage()를 만든다.
double getAverage() {
return this.getTotal() / 3.0;
}