무룩 공부방

[Java02] 26. 인터페이스 (Interface) (Eclipse) 본문

IT/Java02_Intermediate

[Java02] 26. 인터페이스 (Interface) (Eclipse)

moo_look 2023. 10. 8. 12:47

# 인터페이스

  • 상수(final)와 추상 메서드로만 멤버로 가질 수 있고 다른 어떤 요소도 사용불가
  • 인터페이스 선언 키워드 : interface
  • 모든 메서드가 추상 메서드이기 때문에 메서드 작성시 public abstract 생략 가능하다
  • 상수 작성시 public static final도 생략 가능하다
  • 인터페이스의 객체는 생성할 수 없다.
  • 다른 인터페이스를 상속할 수 있다. 단, 인터페이스로 부터만 가능하다(클래스는 상속 불가)
  • 여러개의 인터페이스로부터 다중 상속 가능하다
  • 추상메서드는 구현부가 없기 때문에 어떤것을 상속받아도 관계 없기 때문
  • 구현키워드 : implements

 

  • 인터페이스는 상속과 구현을 동시에 할 수 있다.( default 메서드/ jdk8버전 부터 사용가능 )
  • ex) default void printLogo() {}
  • 멤버변수 추가 가능
  • 필요한 일반 메서드도 추가 할 수 있다.

package java02_intermediate;

interface PhoneInterface {
	
	final int TIMEOUT = 10000; 
	
	public abstract void sendCall(); 
	void receiveCall();
	
	default void printLogo() { 
		System.out.println("Samsung Phone");
	}
	
}

interface MobilePhone extends PhoneInterface { 
	void sendSns(); 
	void recevieSns();
}

interface Mp3Interface {
	public void play();
	public void stop();
}

class Pda {
	public int calc(int x, int y) {
		return x + y;
	}
}

class SmartPhone extends Pda implements MobilePhone, Mp3Interface { 
	@Override
	public void sendCall() {
		System.out.println("send call");
	}
	@Override
	public void receiveCall() {
		System.out.println("receive call");			
	}
	@Override
	public void sendSns() {
		System.out.println("send massage");			
	}
	@Override
	public void recevieSns() {
		System.out.println("receive massage");		
	}
	@Override
	public void play() {
		System.out.println("music play");
	}
	@Override
	public void stop() {
		System.out.println("music stop");
	}
	
	public void schedule() {
		System.out.println("일정관리");
	}
	
}

class SamSung implements PhoneInterface { 

	public void flashOn(boolean onOff) {
		if(onOff) {
			System.out.println("라이트 등 켜짐");			
		}else {
			System.out.println("라이트 등 꺼짐");			
		}
	}
	
	@Override
	public void sendCall() {
		System.out.println("전화를 거는중...");
	}
	
	@Override
	public void receiveCall() {
		System.out.println("전화 왔어요");
	}
	
}

public class Java26_Interface {

	public static void main(String[] args) {
		SamSung ss = new SamSung();
		ss.printLogo();
		ss.sendCall();
		ss.receiveCall();
		ss.flashOn(true);
		
		SmartPhone sp = new SmartPhone();
		sp.play();
		
	}
	
}