티스토리 뷰

배움과 복습

abstract class

뚜비콩 2017. 9. 1. 15:30
package chapter07;

public abstract class Phone {
	
	abstract void call(); //메소드가 추상이면 그 클래스는 추상타입이어야합니다. 하나라도!
	
	void powerOn() {
		System.out.println("전원이 켜짐...");
	}
	
	void powerOff() {
		System.out.println("전원이 꺼짐...");
	}
	
	/*public static void main(String[] args){
		Phone p = new Phone();
	}*/

}

메소드 중에 하나라도 추상타입이라면 그 메소드를 갖고 있는 클래스는 반드시 추상타입이어야 한다. 

부모가 가지고 있는 추상 메소드를 받아서 사용하고 싶다면 그것을 사용하는 자식은 반드시 재정의(Override)해야 한다. 


Q, 재정의를 안 한다면 무슨 일이 일어날까? 
package chapter07;

public class SmartPhone extends Phone{

}

SmartPhone이라는 변수 명에 에러 메세지가 뜬다. 

call()이라는 메세지가 '반드시' 재정의되어야하기 때문이다!


package chapter07;

public class SmartPhone extends Phone{

	@Override
	void call() {
		// TODO Auto-generated method stub
		
	}

}


-----------------------------> 올바른 재정의!

'배움과 복습' 카테고리의 다른 글

java GUI - actionPerformed  (0) 2017.09.04
extends and implements in JAVA  (0) 2017.09.04
Abstract class에 대해  (0) 2017.09.01
2017-09-01 금요일: 7.상속  (0) 2017.09.01
Getter와 Setter, 그리고 private타입  (0) 2017.08.31
댓글