day18_TVCR5

육희영·2021년 10월 28일
0
package com.java1.day18;

//인터페이스를 이용한 다중 상속..
//자바는 다중 상속을 허용하지 않으므로, 한쪽만 선택하여 상속받고 나머지 한쪽은 클래스 내에 포함시켜서 
//내부적으로 인스턴스를 생성해서 사용하도록 하였다.
public class TVCR5 extends Tv implements IVCR { //IVCR 인터페이스를 구현하고 TV클래스로 부터 상속받는 TVCR클래스
	//VCR 클래스의 인스터스를 이용하면 다중 상속을 구현할수 있다.
	VCR vcr = new VCR();
	
	//아래의 오버라이딩된 메서드 들의 장점은 VCR클래스의 내용이 변경되어도 변경된 내용이 TVCR 클래스에도 자동적으로
	//반영되는 효과를 얻을수 있다.
	@Override
	public void play() {
		vcr.play();
	}
	@Override
	public void stop() {
		vcr.stop();
	}
	@Override
	public void reset() {
		vcr.reset();
	}
	@Override
	public int getCounter() {
		return vcr.getCounter(); 
	}
	@Override
	public void setCounter(int c) {
		vcr.setCounter(c);
	}
	//인터페이스를 새로 작성하지 않고도 VCR클래스를 TVCR클래스에 포함시키는 것만 으로도 충분하지만,
	//인터페이스를 이용하면 다형적 특성을 이용할 수 있다는 장점이 있다.
}

class Tv {
	protected boolean power;
	protected int channel;
	protected int volume;
	
	public void power() { power = !power; }
	public void channelUp() { channel++;}
	public void channelDown() { channel--;}
	public void volumeUp() { volume++;}
	public void volumeDown() { volume--;}	
}

class VCR {
	protected int counter; //VCR의 카운터
	public void play() {
		//Tape를 재생한다.
	}
	public void stop() {
		//재생을 멈춘다.
	}
	public void reset() {
		counter = 0;
	}
	public int getCounter() {
		return counter;
	}
	public void setCounter(int c) {
		counter = c;
	}
}

//VCR 클래스에 정의된 메서드와 일치하는 추상메서드를 갖는 인터페이스를 작성한다.
interface IVCR {
	public void play();
	public void stop();
	public void reset();
	public int getCounter();
	public void setCounter(int c);
}

0개의 댓글

관련 채용 정보