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() {
		
	}
}