티스토리 뷰

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);

}

}









Recent Comments