추상화란 구체적인 사항은 감추고, 중요한 개념을 정의하는 것을 의미합니다. java 에서 추상화는 주로 추상 클래스와 인터페이스를 통해 구현됩니다.
// 추상 클래스
abstract class Animal {
// 추상 메서드 (구현 없음)
public abstract void sound();
// 일반 메서드 (구현 있음)
public void sleep() {
System.out.println("Sleeping...");
}
}
// 추상 클래스를 상속받는 클래스
class Dog extends Animal {
// 추상 메서드 구현
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
// Animal animal = new Animal(); // 추상 클래스는 인스턴스화 할 수 없음
Animal myDog = new Dog(); // Dog 클래스는 추상 클래스의 추상 메서드 구현
myDog.sound(); // 출력: Dog barks
myDog.sleep(); // 출력: Sleeping...
}
}
Animal은 추상 클래스이며, sound() 메서드는 추상 메서드로 정의됨Dog 클래스는 Animal을 상속받아 sound() 메서드를 구현해야 함// 인터페이스 정의
interface Vehicle {
void start();
void stop();
}
// 인터페이스 구현
class Car implements Vehicle {
@Override
public void start() {
System.out.println("Car starts");
}
@Override
public void stop() {
System.out.println("Car stops");
}
}
public class Main {
public static void main(String[] args) {
Vehicle myCar = new Car(); // Vehicle 인터페이스를 구현한 Car 객체
myCar.start(); // 출력: Car starts
myCar.stop(); // 출력: Car stops
}
}
Vehicle은 인터페이스로, start()와 stop() 메서드를 선언함Car 클래스는 Vehicle 인터페이스를 구현하여 해당 메서드들을 정의Vehicle의 기능을 이용하고, 구체적인 동작은 Car 클래스에서 구현