부모 클래스의 속성과 메서드를 자식 클래스가 물려받아 사용할 수 있습니다.
extends 키워드 사용class Animal {
void eat() {
System.out.println("먹는다");
}
}
class Dog extends Animal {
void bark() {
System.out.println("짖는다");
}
}
// 사용 예
Dog d = new Dog();
d.eat(); // Animal의 메서드
d.bark(); // Dog의 메서드
공통된 특징을 추출해 설계만 정의하고 구체적 구현은 자식 클래스에 위임합니다.
abstract 키워드 사용abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
void draw() {
System.out.println("원을 그린다");
}
}
// 사용 예
Shape s = new Circle();
s.draw(); // Circle의 draw() 실행
동일한 타입으로 다양한 형태의 객체를 다룰 수 있습니다.
Shape s = new Circle();
s.draw(); // Circle의 draw() 호출
Shape 타입으로 선언했지만 실제 동작은 Circle 클래스의 메서드가 수행됩니다.
데이터와 메서드를 하나로 묶고 외부에는 필요한 부분만 공개합니다.
private 접근 제한자로 멤버 보호public getter/setter 메서드로 간접 접근class Account {
private int balance;
public int getBalance() {
return balance;
}
public void deposit(int amount) {
if (amount > 0) balance += amount;
}
}
// 사용 예
Account acc = new Account();
acc.deposit(1000);
System.out.println(acc.getBalance()); // 1000
balance 필드에 직접 접근하지 않고 메서드를 통해 조작합니다.
| 개념 | 주요 특징 |
|---|---|
| 상속 | 부모 클래스의 속성과 기능을 자식이 물려받음 |
| 추상화 | 설계만 정의하고 구체적 구현은 자식이 담당 |
| 다형성 | 동일 타입으로 다양한 객체를 처리 |
| 캡슐화 | 데이터와 메서드를 묶어 외부 접근을 제한 |
📚 참고자료