
abstract 반환타입 메서드이름 (매개변수);
Computer.java
public abstract class Computer {
abstract public void display();
abstract public void typing();
public void turnOn() {
System.out.println("Turn On!");
}
public void turnOff() {
System.out.println("Turn Off!");
}
}
Computer클래스로 모든 컴퓨터 기기의 공통적인 기능을 추상화.
Desktop.java
public class Desktop extends Computer{
@Override
public void display() {
System.out.println("Display Desktop!");
}
@Override
public void typing() {
System.out.println("Typing Desktop!");
}
}
NoteBook.java
public class NoteBook extends Computer{
@Override
public void display() {
System.out.println("Display NoteBook!");
}
@Override
public void typing() {
System.out.println("Typing NoteBook!");
}
public void charging() {
System.out.println("Charging NoteBook!");
}
}
Desktop, NoteBook 클래스는 Computer 클래스를 상속받아 display,typing 추상메서드를 구현. 또한 NoteBook 클래스처럼 charging메서드 추가로 확장이 가능하다.
class Player {
void play() {}
void stop() {}
}
class CDPlayer extends Player {
void play() {/*구체적인 구현*/}
void stop() {/*구체적인 구현*/}
}
위에 코드처럼, Player 클래스에 구현부가 비어있는 메서드를 만들고, 자손 클래스에서 상속 받아 오버라이드 해도 상관없지만, 굳이 abstract 붙여서 추상메서드로 선언하는 것은 자손 클래스에서 추상메서드를 반드시 구현하도록 강요하기 위해서이다.