클래스에서 인터페이스를 사용한다면
그 클래스가 해당 인터페이스에 포함된 메소드를 구현하도록 강제하는 것
추상메소드보다 추상화의 정도가 더 높다
interface
, implements
public
이어야 한다.package pr01;
interface Calculatable{
public int sum();
public int avg();
public static final int ABC = 123; // 모든 멤버 변수는 public static final 이어야 함
public abstract void run(); // 메소드는 추상 메소드 이어야 함
public default void setState(boolean state){// 디폴트 메소드는 실행 내용까지 작성이 가능함
if(state){
System.out.println("현재 상태는 정상입니다");
}else{
System.out.println("현재 상태는 비정상입니다");
}
}
public static void change(){ // 정적 메소드
System.out.println("상태를 변경합니다.");
}
}
class CalculDummy implements Calculatable{
@Override
public int sum() {
return 60;
}
@Override
public int avg() {
return 30;
}
@Override
public void run() {
}
@Override
public void setState(boolean state) {
}
}
public class test {
public static void main(String[] args) {
CalculDummy c1 = new CalculDummy();
c1.avg();
}
}
package pr01;
interface i1{
public void x();
}
interface i2{
public void z();
}
interface i3 extends i2{
public void y();
}
class A implements i1,i2{
@Override
public void x() {
System.out.println("인터페이스 i1의 X 입니다");
}
@Override
public void z() {
System.out.println("인터페이스 i2의 Z 입니다");
}
}
class B implements i3{
@Override
public void y() {
System.out.println("인터페이스 i3의 Y 입니다");
}
@Override
public void z() {
System.out.println("인터페이스 i3의 Z 입니다");
}
}
public class test {
public static void main(String[] args) {
}
}