item 16 JihoonKim - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
ν¨ν€μ§ λ°κΉ₯μμ μ κ·Όν μ μλ ν΄λμ€λΌλ©΄ μ κ·Όμλ₯Ό μ 곡νλΌ
ν΄λ³΄ν ν΄λμ€
class Point {
public double x;
public double y;
}
- λ¨μ
- λ΄λΆ ννμ λ°κΎΈλ €λ©΄ APIλ₯Ό μμ ν΄μΌ ν¨
- λΆλ³μ 보μ₯ X
- μΈλΆμμ νλμ μ κ·Όν λ λΆμ μμ
μν λͺ»ν¨
μΊ‘μνν ν΄λμ€
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) { this.x = x; }
public void setY(double Y) { this.y = y; }
}
- μ₯μ
- λ΄λΆλ₯Ό μΈμ λ λ°κΏ μ μλ μ μ°μ±
package-private(default) ν΄λμ€λ private μ€μ²©(nested) ν΄λμ€λ λ°μ΄ν° νλλ₯Ό λ
ΈμΆν΄λ λ¬Έμ κ° μλ€.
- ν΄λμ€ μ μΈ λ° μ¬μ©νλ μ½λ λ©΄μμ μ κ·Όμ λ°©μλ³΄λ€ ν¨μ κΉλ
- ν΄λΉ ν΄λμ€λ₯Ό ν¬ν¨νλ ν¨ν€μ§ μμμλ§ λμνλ μ½λμ΄κΈ°μ ν¨ν€μ§ λ°κΉ₯ μ½λμ μ ν μλμ§ μκ³ λ°μ΄ν° νν λ°©μ λ³κ²½μ΄ κ°λ₯
- private μ€μ²© ν΄λμ€λ μ΄ ν΄λμ€λ₯Ό ν¬ν¨νλ μΈλΆ ν΄λμ€κΉμ§λ‘ μμ λ²μκ° λ μ’λ€
public ν΄λμ€μ νλλ₯Ό μ§μ λ
ΈμΆμν¨ μ¬λ‘
- java.awt.packageμ Pointμ Dimension (μμ§λ ν΄κ²°λμ§ λͺ»νλ€, item67)
public ν΄λμ€μ final νλλ₯Ό μ§μ λ
ΈμΆνμ λ
- λΆλ³μμ 보μ₯ν μ μλ€.
- λ¨μ
- λ΄λΆ ννμ λ°κΎΈλ €λ©΄ APIλ₯Ό μμ ν΄μΌ ν¨
- μΈλΆμμ νλμ μ κ·Όν λ λΆμ μμ
μν λͺ»ν¨
public final class Time {
private static final int HOURS_PER_DAY = 24;
private static final int MINUTES_PER_HOUR = 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_HOUR)
throw new IllegalArgumentException("λΆ : " + minute);
this.hour = hour;
this.minute = minute;
}
...
}
ν΅μ¬ μ 리
- public ν΄λμ€λ μ λ κ°λ³ νλλ₯Ό μ§μ λ
ΈμΆν΄μλ μλλ€.
- λΆλ³ νλμ λ
ΈμΆλ μ νλ κ²μ΄ μ’λ€.
- package-private(default) ν΄λμ€λ private μ€μ²© ν΄λμ€μμλ (λΆλ³μ΄λ μλλ ) νλλ₯Ό λ
ΈμΆνλ κ²μ΄ λμ λλ μλ€.
μ°Έκ³ μλ£