인터페이스
: 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스.
default : abstract method()
InheritanceWay
package ch07_interface;
class TestA {}
interface InterA {}
class TestB extends TestA {}
class TestZ extends TestB {}
class TestC implements InterA {}
class TestD {}
// class TestE extends TestA, TestB {} java는 한번에 여러개의 클래스를 상속받을 수 없음.
class TestE extends TestA implements InterA {}
interface InterB extends InterA {} // interface 가 interface의 상속을 받을 땐, extends 사용.
interface InterC {}
class TestF implements InterA, InterB {} // 한번에 여러개의 인터프리터 상속가능.
public class InheritanceWay {
}
package ch07_interface;
/*
* interface
* → 100% 순수한 추상클래스.
* → class 대신 interface를 사용해서 정의.
* → 생성자를 못만들어서, 객체생성불가.
*/
public interface Tools {
// interface 안의 모든 멤버들은 자동으로 public static final이므로 생성과 동시에 초기화.
int A = 1;
public static final int B = 2;
// public Tools() {} : 생성자 불가.
// 추상 클래스 , 인터페이스 → 다른 메서드를 구현시키기위해 존재하는 함수. 단독적으로 쓰일 수 없음.
public abstract void abstractMethod();
public static void staticMethod() {
System.out.println("- static method() -");
}
default void defaultMethod() {
System.out.println("- default method() -");
}
}
package ch07_interface;
// interface를 상속받을 때에는 implements
public class ToolsImpl implements Tools{
@Override
public void abstractMethod() {
}
}