class 키워드 대신 interface 키워드를 사용해서 정의
내부에는 추상 메소드를 선언
클래스에서 인터페이스를 받아서 완성할 때 implements 키워드 사용
java는 다중 상속을 지원하지 않지만, 인터페이스를 사용해서 다중상속과 비슷하게 작성가능
클래스와 인터페이스가 많아지면 관리가 어려워 패키지 단위로 묶어서 관리
사용자가 생성한 클래스가 포함될 패키지는 *.java 파일 맨 첫 행에 지정
데이터 형식의 안전성을 보장하는 데 사용
뿐 아니라 ,, 사용자가 정의한 클래스형에 사용
같은 메서드를 여러개 가지면서 매개변수의 유형과 개수가 달라짐
상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것으로 메서드의 이름과 파라미터의 개수와 타입 등이 동일
주로 사우이 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용
⇒ 오버로딩과 오버라이딩은 메소드의 이름 모두 동일하며
오버로딩은 매개변수와 타입이 다르지만 오버라이딩은 동일
오버로딩은 리턴타입에 상관없지만 오버라이딩은 동일