추상(abstract)

: 실체 간에 공통되는 특성을 추출한 것

ex) 새, 곤충, 물고기 -> 동물(추상)

 

추상 클래스(abstract class)

: 실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스

: 추상 클래스는 실체 클래스의 부모 클래스 역할

 

직접 new 연산자를 사용해서 인스턴스를 생성시키지 못한다.

자식 객체가 생성될 때 super(...)를 호출해서 추상 클래스 객체를 생성하므로 생성자가 반드시 있어야 한다.

 

추상 클래스 생성

 

추상 클래스

package sec08.exam01_abstract_class;

public abstract class Phone {
	//필드
	public String owner;
	
	//생성자
	public Phone(String owner) {
		this.owner = owner;
	}
	
	//메소드
	public void turnOn() {
		System.out.println("폰 전원을 켭니다");
	}
	public void turnOff() {
		System.out.println("폰 전원을 끕니다.");
	}
}

 

실체 클래스

package sec08.exam01_abstract_class;

public class SmartPhone extends Phone {
	//생성자
	public SmartPhone(String owner) {
		super(owner);
	}
	
	//메소드
	public void internetSearch() {
		System.out.println("인터넷 검색을 합니다.");
	}
}

 

실행 클래스

package sec08.exam01_abstract_class;

public class PhoneExample {
	public static void main(String[] args) {
		//Phone phone = new Phone(); //추상 클래스는 인스턴스 생성 불가
		SmartPhone smartPhone = new SmartPhone("홍길동");
		
		smartPhone.turnOn(); //추상클래스(Phone)으로 부터 상속받음
		smartPhone.internetSearch(); //자식클래스(SmartPhone)의 메소드
		smartPhone.turnOff(); //추상클래스(Phone)으로 부터 상속받음
	}
}
폰 전원을 켭니다
인터넷 검색을 합니다.
폰 전원을 끕니다.

+ Recent posts