Computer.java
package abstractex;
public abstract class Computer {
//아래 두 메서드는 하위위클래스가 알아서 구현해야되는 메서드
public abstract void display();
public abstract void typing();
//아래 두메서드는 공통으로 쓰이는 메서드
public void turnOn() {
System.out.println("전원을 킵니다.");
}
public void turnOff() {
}
}
DeskTop.java
package abstractex;
//하나의 추상메서드를 포함하면 abstract를 명시해줘야한다.(추상클래스로 선언)
public class DeskTop extends Computer{
public void display() {
System.out.println("DeskTop Display");
}
@Override
public void typing() {
System.out.println("DeskTop Typing");
}
//turnOff클래스를 오버라이딩하여 재정의할 수 있음
@Override
public void turnOff() {
System.out.println("desktop turnoff");
}
}
NoteBook.java
package abstractex;
public class NoteBook extends Computer{
@Override
public void display() {
// TODO Auto-generated method stub
}
@Override
public void typing() {
// TODO Auto-generated method stub
}
}
MyNoteBook.java
package abstractex;
public class MyNoteBook extends NoteBook{
@Override
public void display() {
// TODO Auto-generated method stub
}
@Override
public void typing() {
// TODO Auto-generated method stub
}
}
ComputerTest.java
package abstractex;
public class ComputerTest {
public static void main(String[] args) {
//상위클래스Computer의 변수computer로 하위클래스에 인스턴스가 생성되서 대입될 수 있다.
//상속에서도 그래왔듯이 상속에서도 똑같이 적용됨
Computer computer=new DeskTop();
computer.display();
}
}
메서드와 클래스에 abstract 키워드 사용
추상 메서드가 포함된 클래스는 추상 클래스로 선언
모든 메서드가 구현되었다고 해도 클래스에 abstract키워드를 사용하면 추상클래스
추상클래스는 주로 상속의 상위클래스로 사용됨
추상메서드 : 하위 클래스가 구현해야 하는 메서드
구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드, 하위클래스에 따라 재정의 할 수 있음