ITEM 16: Use Accessor methods
class Point {
public double x;
public double y;
}
์ ํด๋์ค๋ ์๋ ๋ฌธ์ ์ ๋ค์ ๊ฐ์ง๊ณ ์๋ค.
์บก์ํ ์ด์ ์ ๊ณตํ์ง ๋ชปํจ(๋ฐ์ดํฐ ํ๋์ ์ง์ ์ ๊ทผ ๊ฐ๋ฅ)
๋ด๋ถ ํํ ๋ณ๊ฒฝ์ API ์์ ํ์
๋ถ๋ณ์ ๋ณด์ฅ ๋ถ๊ฐ๋ฅ
์ธ๋ถ์์ ํ๋์ ์ ๊ทผํ ๋ ๋ถ์ ์์ ์ํ ๋ถ๊ฐ๋ฅ
์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ด ์ซ์ด ๋ณดํต ์๋์ ๊ฐ์ด private ํ๋๋ฅผ public ์ ๊ทผ์๋ก ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ตฌํํ๋ค.
์ ๊ทผ์ ๋ฐฉ์
class Point{
private double x;
private double y;
public Point(double x, double y){
this.x = x;
this.y = y;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
public void setX(double x){
return this.x = x;
}
public void setY(double y){
return this.y = y;
}
}
ํจํค์ง ๋ฐ๊นฅ์์ ์ ๊ทผํ ์ ์๋ ํด๋์ค๋ผ๋ฉด ์ ๊ทผ์๋ฅผ ์ ๊ณตํ์ฌ ํด๋์ค ๋ด๋ถ ํํ ๋ฐฉ์์ ์ธ์ ๋ ๋ฐ๊ฟ ์ ์๋ ์ ์ฐ์ฑ์ด ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก public ํด๋์ค์์ ์ด ๋ฐฉ์์ ํ์คํ ๋ง๋ค.
ํ์ง๋ง, package-private
, private
์ค์ฒฉ ํด๋์ค์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ๋๋ฅผ ๋
ธ์ถํ๋ค๊ณ ํด๋ ๊ทธ ํด๋์ค๊ฐ ํํํ๋ ค๋ ์ถ์ ๊ฐ๋
๋ง ์ฌ๋ฐ๋ฅด๊ฒ ํํํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๋ค. ์ ๊ทผ์ ๋ฐฉ์๋ณด๋ค ํจ์ฌ ๊น๋ํ๋ฉฐ, ํจํค์ง ๋ฐ๊นฅ ์ฝ๋ ์ ๊ฒฝ์ฐ์ง ์๊ณ ๋ฐ์ดํฐ ํํ ๋ฐฉ์์ ๋ฐ๊ฟ ์ ์๋ค.
๋ถ๋ณ ํ๋
public final class Time {
private static final int HOURS_PER_DAY = 24;
private static final int MINUTES_PER_DAY = 60;
public final int hour;
public final int minute;
public Time(int hour, int minute){
if(hour < 0 || hour >= HOURS_PER_DAY){
throw new IllegalArgumentException("์๊ฐ : "+ hour);
}
if(minute < 0 || minute >= MINUTES_PER_DAY){
throw new IllegalArgumentException("๋ถ : "+ hour);
}
this.hour = hour;
this.minute = minute;
}
}
๋ค์๊ณผ ๊ฐ์ด public ํด๋์ค์ ํ๋๊ฐ ๋ถ๋ณ์ด๋ผ๋ฉด ๋ถ๋ณ์์ ๋ณด์ฅํ ์ ์๊ฒ๋์ด ์ง์ ๋ ธ์ถํ ๋์ ๋จ์ ์ ์ค์ง๋ง, ์ฌ์ ํ ๋จ์ ์ด ์กด์ฌํ๋ค.
๋ด๋ถ ํํ ๋ณ๊ฒฝ์ API ์์ ํ์
ํ๋๋ฅผ ์ฝ์ ๋ ๋ถ์ ์์ ์ ์ํํ ์ ์๋ค.
Last updated
Was this helpful?