JAVA 160609 추상클래스
abstract로 지정해준 volumeControl메소드는 필수로 써야한다.
그외 다른 메소드는 사용해도 되고 안해도 되는 옵셔널.
Jepum(추상클래스)를 불러드리고 있는데 오버라이드가 안되어 있어 오류가 나는 상태
추상클래스는 무조건 오버라이드를 해야지만 된다.
//추상클래스는 부모로써의 의미만 있다. 추상클래스내에서 new를 지정할 수 없다.
package mypack3;
public class JepumMain {
public static void main(String[] args) {
// 추상클래스에서 new 안됨
//Jepum jepum = new Jepum(); //추상 클래스라서 안됨.
Jepum jepum = null;
JepumTv tv = new JepumTv();
tv.volumeControl();
tv.volumeShow();
System.out.println();
JepumRadio radio = new JepumRadio();
radio.volumeControl();
radio.volumeShow();
System.out.println();
jepum = tv;
jepum.volumeControl();
jepum.volumeShow();
System.out.println();
jepum = radio;
jepum.volumeControl();
jepum.volumeShow();
}
}
package mypack3;
abstract public class Jepum { //추상 클래스 / new 할수 없다 / 부모클래스로써만 의미있다.
public int volume = 0;
public Jepum() {
System.out.println("추상 클래스 생성자");
}
abstract public void volumeControl(); //바디{{}}가 없는 메소드 - 추상 메소드 //필수
public void volumeShow(){ //일반 메소드 //옵셔널
System.out.println("소리 크기:" + volume);
}
}
package mypack3;
public class JepumRadio extends Jepum {
@Override
public void volumeControl() {
System.out.println("라디오 소리 업다운");
}
}
package mypack3;
public class JepumTv extends Jepum{ //메소드를 오버라이드 하도록 강요.
public JepumTv(){
System.out.println("TV 생성자");
}
@Override
public void volumeControl() { //필수
System.out.println("TV 소리 조절");
}
@Override
public void volumeShow() { //선택
volume = 10;
System.out.println("텔레비전 소리 크기:" + volume);
}
}
'📁 공부정리 > JAVA' 카테고리의 다른 글
JAVA 160610 class 상속 (0) | 2016.06.10 |
---|---|
자바 다형성(java polymorphism), 메소드재정의, 다중정의(method overrding, method overloading) (0) | 2016.06.09 |
JAVA 160808 overload overraid (0) | 2016.06.08 |
JAVA 160608 Singleton (0) | 2016.06.08 |
JAVA 160608 자판기 복습 (0) | 2016.06.08 |