: 껍데기, 알맹이가 없음. > 구현되면 안됨.
Q. int i =10;은 되는데?
: 인터페이스는 어차피 상수라서 앞에 final 이 생략된 것. 메소드 앞에도 abstract 가 생략된 것.
! 인터페이스를 알면 하산하라!, 숨겨진게 많음.
( 확장자는 java > 컴파일하면 class 나옴. > 인터페이스도 class의 일종. )
1) interface 앞에는 abstract가 생략됨.
2) public static final (멤버 앞에 생략되어 있음.)
3) 메소드 앞에는 public abstract 가 생략 됨.
4) static 메소드에는 public이 생략 됨. (다른 패키지에서 A.m1() 이렇게 그냥 가져올 수 있음.)
5) default 메소드에도 public이 생략 됨. (다른 패키지에서 A.m1() 이렇게 그냥 가져올 수 있음.)
( 디폴트 메소드는 이미 구현된 메소드라는 의미. )
-패키지가 다를때 사용하려면, 사용하려는것의 class가 public 이어야함. 상속이면 protected
1) 객체는 완벽한 자식클래스를 만들어서 그 객체를 생성 후 형변환해서 만든다. (자식 > 부모로)
2) 인터페이스의 static 메소드는, 인터페이스 이름으로만 접근 가능. (객체의 이름으로 접근불가)
3) 자식 클래스를 만들때에는 implements 사용
(다중상속 가능 : class B implements B1, B2, ...)
4) 인터페이스 끼리의 상속은 extends 사용
(다중상속 가능 : interface B3 extends B1, B2, ...)
: 부모의 추상메소드 + 내 추상메소드 다 구현해야 실행할 수 있음.
5) 일반적인 자식 클래스의 형태
class BChild extends Object(클래스) implements B1, B2, B3....