인터페이스는 다중 상속이 가능하다
인터페이스 안에 들어가는 변수는 자동으로 static이 붙는다
인터페이스는 다형성을 극대화 한것으로 유지보수성을 높이기 위해 사용한다
interface Camera{
void takePhoto();
}
interface Music{
void playMusic();
}
interface View{
public void view(); // 대소문자의 차이로 생성자가아님
}
class Shape2{
private int size;
private String color;
void setSize(int size) {
this.size = size;
}
void setColor(String color) {
this.color = color;
}
int getSize() {
return size;
}
String getColor() {
return color;
}
}
class Phone extends Shape2 implements Camera, Music{
@Override
public void playMusic() {
System.out.println("음악감상");
}
@Override
public void takePhoto() {
System.out.println("사진찍기");
}
}
public class Ex17 {
public static void main(String[] args) {
Phone p = new Phone();
p.playMusic();
p.takePhoto();
Shape2 s2 = new Shape2();
s2.setSize(123);
s2.setColor("blue");
System.out.println(s2.getSize());
System.out.println(s2.getColor());
}
}
상속과는 달리 extends 대신 implements를 사용한다
만약 상속과 인터페이스를 한클래스에 사용한다 면 상속이 앞에오고 인터페이스가 뒤로간다
다음 예제는 객체를 입맛대로 설정해 원하는 값만을 뽑아내는 코드이다
s2의 경우는 set과 get을 이용해 값을 s2 size와 color에 집어넣은것이다