JAVA/JAVA

[JAVA] 인터페이스

우와왕고기다 2023. 12. 22. 16:20

인터페이스

 

코드 수행부가 없는  추상 메서드로 구성 된다.

오버라이딩을 통한 다양한 동작을 목적으로 한다.

인터페이스의 상속은 implements키워드이다.

  • 다형성 : 한 대상이 다양한 형태로 동작 또는 해석된다.
  • 유연성 : 다양한 요구사항을 수용하는 성질이다.

 

구현체 클래스는 인터페이스의 모든 추상 메서드를 반드시 재정의해야 한다.

 

interface Alarm{
//	
	public abstract void playMusic(String title);
//	public abstract 코드가 없어도 암묵적으로 적용된다.
	void beep();
}

class SmartPhone implements Alarm{
	
	private String phoneNumber;
	@Override
//	추상메서드는 반드시 오버라이딩을 해줘야한다.
	public void playMusic(String title) {
		// TODO Auto-generated method stub
		System.out.printf("[%s]이 재생됩니다..\n", title);
	}
	

	@Override
	public void beep() {
		// TODO Auto-generated method stub
		System.out.println("삐삐삐삐삐삐삐삐삐삐");
	}
	
}


public class AlarmTest {
	public static void main(String[] args) {
		Alarm a = new SmartPhone();
		a.playMusic("상어");
		a.beep();
	}
}

 

인터페이스는 다중 상속이 가능하다

 

interface Alarm{
//	
	public abstract void playMusic(String title);
	void beep();
}
interface Phone{
//	
	public abstract void call(String title);
	public abstract void receive();
}
interface Messenger{
//	
	void sendMsg(String phoneNum, String msg);
	void receiveMsg();
}
class SmartPhone implements Alarm, Phone, Messenger{
	
	private String phoneNumber;
	@Override
//	추상메서드는 반드시 오버라이딩을 해줘야한다.
	public void playMusic(String title) {
		// TODO Auto-generated method stub
		System.out.printf("[%s]이 재생됩니다..\n", title);
	}
	@Override
	public void beep() {
		// TODO Auto-generated method stub
		System.out.println("삐삐삐삐삐삐삐삐삐삐");
	}
	@Override
	public void sendMsg(String phoneNum, String msg) {
		// TODO Auto-generated method stub
		System.out.printf("[%s]로 메세지 전송: %s\n", phoneNum, msg);

	}
	@Override
	public void receiveMsg() {
		// TODO Auto-generated method stub
		 System.out.println("메세지가 도착하였습니다.");

		
	}
	@Override
	public void call(String phoneNum) {
		// TODO Auto-generated method stub
		  System.out.printf("[%s]로 전화를 겁니다..rrr\n", phoneNum);

	}
	@Override
	public void receive() {
		// TODO Auto-generated method stub
		 System.out.println("전화를 받습니다.");

	}
	
}


public class AlarmTest {
	public static void main(String[] args) {
		 SmartPhone sp = new SmartPhone ();
         sp.playMusic("상어송");
         sp.call("010-1234-5678");
         sp.sendMsg("010-1234-5678", "자니?");

	}
}