Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

7.10 추상 클래스 본문

이것이 자바다/07 상속

7.10 추상 클래스

빌드이너프 2024. 4. 2. 19:49

객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 

이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스를 추상 클래스라고 한다

 

추상 클래스는 실체 클래스의 부모 역할을 한다

따라서 실체 클래스는 추상 클래스를 상속해서 공통적인 필드나 메소드를 물려받을 수 있다

 

추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 new 연산자를 사용해서 객체를 직접 생성할 수 있다

 

추상 클래스는 새로운 실체 클래스를 만들기 위한 부모 클래스로만 사용된다

즉, 추상 클래스는 extends 뒤에만 올 수 있다

 

추상 클래스 선언

public abstract class 클래스명 {
  //필드
  //생성자
  //메소드
}

 

추상 클래스도 필드, 메소드를 선언할 수 있다

자식 객체가 생성될 때 super()로 추상 클래스의 생성자가 호출되기 때문에 생성자도 반드시 있어야 한다

 

Phone 객체는 new 연산자로 직접 생성할 수 없지만, 자식 객체인 SmartPhone은 new 연산자로 객체 생성이 가능하다

package ch07.sec10.exam01;

public abstract class Phone {
	String owner;
	
	Phone(String owner) {
		this.owner = owner;
	}
	
	void turnOn() {
		System.out.println("전원을 켭니다");
	}
	
	void turnOff() {
		System.out.println("전원을 끕니다");
	}
}
package ch07.sec10.exam01;

public class SmartPhone extends Phone {
	SmartPhone(String owner) {
		super(owner);
	}
	
	void internetSearch() {
		System.out.println("인터넷 검색");
	}
}