추상(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)으로 부터 상속받음
}
}
폰 전원을 켭니다
인터넷 검색을 합니다.
폰 전원을 끕니다.
'Java > 7. 상속 (Inheritance)' 카테고리의 다른 글
Day 10 : Exercise - Inheritance (0) | 2021.11.01 |
---|---|
Day 10 : 추상 메소드와 오버라이딩 (0) | 2021.11.01 |
Day 10 : 객체 타입 확인 (instanceof) (0) | 2021.11.01 |
Day 10 : 강제 타입 변환 (Type Casting) (0) | 2021.11.01 |
Day 10 : 매개 변수의 다형성 (0) | 2021.11.01 |