package j13_추상화.인터페이스;
public abstract class Button implements Press,Down,Up {
//탬플릿 메소드 패턴
//implements 다중상속이 가능하며 부모의 메소드를 반드시 오버라이딩(재정의)해야한다
@Override
public void onDown() {
}
@Override
public void onUp() {
}
@Override
public void onPressed() {
}
}
package j13_추상화.인터페이스;
public interface Down {
public void onDown();
}
package j13_추상화.인터페이스;
public class Main {
public static void main(String[] args){
RemoteControl remoteControl = new RemoteControl(new PowerButton(),new VolumeDownButton(), new VolumeUpButton());
remoteControl.onPressedPowerButton();
remoteControl.onPressedPowerButton();
remoteControl.onDownVolumeDownButton();
remoteControl.onPressedVolumupButton();
}
}
package j13_추상화.인터페이스;
public class PowerButton extends Button {
private boolean status;//boolean은 처음에 false로 최기화됨
@Override
public void onPressed(){
if (status) {
status = false;
System.out.println("전원을 끕니다");
}else{
status = true;
System.out.println("전원을 켭니다");
}
}
}
package j13_추상화.인터페이스;
/*
* interface(인터페이스)
* 1.기본적으로 모든 메소드가 추상메소드로 정의된다
* 2.일반 메소드를 정의하기위해서는 default 키워드를 사용해야한다
* 3.생성자 정의는 불가능하다
* 4.일반 변수 선언 불가능하다
* 5.상수는 선언할수있다.(접근지정자 public사용)
* */
public interface Press {
public final String NAME = "button";//[상수선언 ,초기화]private는안됨
//private String name;[변수선언]
public void onPressed();//abstract키우드 셍략
// public Button({[생성자]
//
// })
// public default void pop(){[일반메소드]
//
// }
}
package j13_추상화.인터페이스;
public class RemoteControl {
private PowerButton powerButton;
private VolumeDownButton volumeDownButton;
private VolumeUpButton volumeUpButton;
public RemoteControl(PowerButton powerButton, VolumeDownButton volumeDownButton, VolumeUpButton volumeUpButton) {
this.powerButton = powerButton;
this.volumeDownButton = volumeDownButton;
this.volumeUpButton = volumeUpButton;
}
public void onPressedPowerButton() {
powerButton.onPressed();
}
public void onPressedVolumupButton() {
volumeUpButton.onPressed();
}
public void onPressedVolumDownButton() {
volumeDownButton.onPressed();
}
public void onDownVolumeUpButton() {
volumeUpButton.onDown();
}
public void onDownVolumeDownButton() {
volumeDownButton.onDown();
}
}
package j13_추상화.인터페이스;
public interface Up {
public void onUp();
}
package j13_추상화.인터페이스;
public class VolumeDownButton extends Button {
@Override
public void onPressed(){
System.out.println("음량을 한칸 내립니다");
}
@Override
public void onDown() {
System.out.println("음량을 계속 올립니다");
}
}
package j13_추상화.인터페이스;
public class VolumeUpButton extends Button {
@Override
public void onPressed(){
System.out.println("음량을 한칸 올림니다");
}
@Override
public void onDown() {
System.out.println("음량을 계속 내립니다");
}
}
'웹 개발' 카테고리의 다른 글
웹 개발_java_2022/11/04_object (0) | 2022.11.07 |
---|---|
웹 개발_java_2022/11/02_참조자료형캐스팅 (0) | 2022.11.03 |
웹 개발_자_2022/10/31_추상클래스 (0) | 2022.11.01 |
웹 개발_java_2022/10/31_상속 (0) | 2022.10.31 |
웹 개발_java_2022/10/27~28_배열 (0) | 2022.10.31 |