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

태그:

카테고리:

업데이트: