
⚠️ 이 글은 저작권 이슈로 인해 일부 내용이 수정 또는 제거되었습니다.
private), 외부와는 getter/setter로 소통public class User {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}public class User {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}✅ 장점
abstract class나 interface를 통해 핵심 기능만 노출public interface RemoteControl {
void turnOn();
void turnOff();
}public interface RemoteControl {
void turnOn();
void turnOff();
}✅ 장점
extends 키워드 사용public class Animal {
void eat() { System.out.println("먹는다"); }
}
public class Dog extends Animal {
void bark() { System.out.println("짖는다"); }
}public class Animal {
void eat() { System.out.println("먹는다"); }
}
public class Dog extends Animal {
void bark() { System.out.println("짖는다"); }
}✅ 장점
Animal a = new Dog();
a.eat(); // Dog에 맞는 동작 수행Animal a = new Dog();
a.eat(); // Dog에 맞는 동작 수행✅ 장점
| 원칙 | 핵심 개념 | 키워드/도구 | 기대 효과 |
| 캡슐화 | 정보 은닉 | private, getter/setter | 안정성 ↑, 유지보수 ↑ |
| 추상화 | 핵심만 노출 | interface, abstract class | 설계 명확, 유연성 ↑ |
| 상속 | 기능 공유 | extends | 코드 재사용, 중복 ↓ |
| 다형성 | 다양한 형태 | 인터페이스, 오버라이딩 | 확장성, 유연한 구조 |