Java 추상(abstract)클래스
Java 추상클래스
추상클래스란
- 여러개의 실체클래스에서 공통적인 부분(필드, 메서드)을 추출해서 따로 선언한 클래스
- 따라서 추상클래스와 실체클래스 사이는 서로 상속의 관계를 가지게 된다.
- 또한, 추상 클래스는 실체클래스에서 동일한 부분만 추출한 것으로 완전하지 않아 스스로 객체를 생성할 수 없다.
- 즉, 추상 클래스는 new 연산자를 사용해서 인스턴스를 생성하지 못한다.
- 추상클래스를 상속받은 실체클래스들은 반드시 추상메서드를 오버라이딩(재정의)해서 실행 내용을 작성해야 한다.
추상클래스 사용 목적
- 여러 사람이 비슷한 클래스를 작업할 때에 필드와 메서드 이름을 통일 시키고 규격에 맞는 실체 클래스구현할 떄 유지 보수성을 높이고 통일성을 유지할 수 있다.
- 실체 클래스 구현시 시간을 절약하기 위해 이미 구현되어져 있는 추상 클래스를 상속 받아 주어진 필드와 메서드만 수정해 빠르게 설계할 수 있다.
추상클래스 사용
- 추상클래스 선언 방법
public abstract class 클래스 { // 필드 // 생성자 // 메소드 }
- Phone.java (추상클래스)
public abstract class Phone {
// 필드
public String owner;
// 생성자
public Phone(String owner) {
this.owner = owner;
}
// 메소드
public void turnOn() {
System.out.println("Turn On the Device.");
}
public void turnOff() {
System.out.println("Turn Off the Device");
}
}
- SmartPhone.java (실체클래스)
- 추상클래스를 상속해서 SamrtPhone 자식 클래스를 정의했다.
- 또한, 클래스의 생성자를 보면 super(owner); 코드로 추상클래스의 생성자를 호출한다.
public class SmartPhone extends Phone {
// 생성자
public SmartPhone(String owner) {
super(owner);
}
// 메소드
public void internetSearch( ) {
System.out.println("Internet Searching");
}
}
- PhoneExample.java (추상클래스 상속받은 실체 클래스 사용)
public class PhoneExample {
public static void main(String[] args) {
// 추상클래스는 아래와 같이 객체를 생성할 수 없음
// Phone phone = new Phone();
SmartPhone smartPhone = new SmartPhone("Samsung");
smartPhone.turnOn();
smartPhone.internetSearch();
smartPhone.turnOff();
}
}
- 결과
Turn On the Device.
Internet Searching
Turn Off the Device