객체 지향 프로그램
private 붙이는 이유? → 상태에 직접적인 접근을 막기 위해 (상태 변경 행위를 통해서 하도록 강제)
메서드에 public을 붙이는 이유? ⇒ 상태를 반드시 행위를 통해 변경하기 위해
package ex04;
class DeskLamp {
private boolean isOn; // 컨벤션(우리끼리의 약속) - boolean은 앞에 is, 변수의 선언
// 자기 클래스 외에서는 접근 불가
public void turnOn() {
isOn = true;
}
public void turnOff() {
isOn = false;
}
public String toString() {
return "현재 상태는 " + (isOn == true ? "켜짐" : "꺼짐");
}
}
public class DeskLampTest {
public static void main(String[] args) {
DeskLamp myLamp = new DeskLamp(); // 인스턴스(heap에 떠야 인스턴스임), 객체(object)
// 객체지향 프로그램
// 상태를 변경시킨는 행위는 모든 곳에
// 상태는 해당 클래스 내부에서만
// private 선언 전) 문법적으로는 ㄱㅊ 객체지향으로는 틀림
// myLamp.isOn = true; (X) -> private 선언 (상태 변경 행위를 통해서 하도록 강제)
// 상태 변경은 행위를 통해서!!!!!
myLamp.turnOn();
System.out.println(myLamp);
myLamp.turnOff();
System.out.println(myLamp);
}
}

main에 public → jvm이 못찾는다 DeskLampTest.Main으로 찾음
package ex04;
class Radio {
// 상태 : isPress
private boolean isPress;
// 행위 : 책임(이 메서드가 해야할 일)을 생각하고 만든다.
// 메서드는 하나의 책임만 가지는 것이 좋다 -> 관리가 편함 (유지보수 굿~)
// 최소한의 책임을 가진 메서드 -> 합치기 좋음
// 1. 책임 (켜다)
// 2. 책임 (끄다)
// 상태를 변경만 하는(끄고 켜는) 메서드
public void turnOn() {
isPress = true;
}
public void turnOff() {
isPress = false;
}
// 상태 확인 -> 반드시 필요
public boolean getIsPress() {
return isPress;
}
}
public class RadioTest {
public static void main(String[] args) {
Radio radio = new Radio();
radio.turnOn();
System.out.println(radio.getIsPress());
radio.turnOff();
System.out.println(radio.getIsPress());
}
}

Share article